Skip to content

Instantly share code, notes, and snippets.

@raulunzue
Last active October 3, 2020 18:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save raulunzue/b51123f033b572c532ab2d81ebc43bfd to your computer and use it in GitHub Desktop.
Save raulunzue/b51123f033b572c532ab2d81ebc43bfd to your computer and use it in GitHub Desktop.
Script que valida la licencia de Microsoft Outlook y envía correo al usuario: https://www.maquinasvirtuales.eu/powershell-avisar-a-usuarios-caducidad-de-outlook/
# Script Raul Unzue - El Blog de Negu
# Revisa que al usuario le faltan menos de 7 días para caducar licencia outlook
# Le manda un correo para que introduzca sus datos para activarla nuevamente
####################
# SABER EL USUARIO
####################
$usuario=C:\windows\system32\whoami.exe
####################
# ELIMINAR DOMINIO
####################
$usuariomodificado=$usuario.Substring(12)
####################################
# SABER LOS DIAS EXPIRACION CUENTA
####################################
# Extraer
cscript "C:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS" /dstatus > c:\Users\runzue\caducidadoutlook.txt
# Extraemos valor de la línea
$dias= (Get-Content c:\Users\runzue\caducidadoutlook.txt | sls -Pattern 'REMAINING GRACE: \d\d*') | foreach {$_.Matches.Value} | ForEach-Object { $_ -replace "REMAINING GRACE: ","" }
#$dias=5
#PUNTO DE CONTROL
Write-Output "Al usuario le quedan $dias para caducar su licencia"
####################
# HACEMOS UN FILTRO
####################
$hora=Get-Date -Format "HH:mm:ss"
# SI LOS DIAS SON MENOS DE 7 DIAS
if ($dias -lt 7)
{
###############
# ENVIO CORREO
###############
# ENCRIPTAMOS USUARIO Y CONTRASEÑA
$EncodedTextMAIL = ZQBsAGIAbABvAGcAZABlAG4AZQBnAHUAQABnAG0AYQBpAGwALgBjAG8AbQA=
$DecodedTextMAIL = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($EncodedTextMAIL))
$EncodedTextPW = cAByAHUAZQBiAGEAcwBjAHIAaQBwAHQA
$DecodedTextPW = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($EncodedTextPW))
$emailSmtpServer = "smtp.tuserver.es"
$emailSmtpServerPort = "587"
$emailSmtpUser = "$DecodedTextMAIL"
$emailSmtpPass = "$DecodedTextPW"
$emailFrom = "cuentacorreo@tudominio.es"
$emailTo = "$file@tudominio.es"
$emailcc="otrousuario@tudominio.es"
$emailMessage = New-Object System.Net.Mail.MailMessage( $emailFrom , $emailTo )
$emailMessage.cc.add($emailcc)
$emailMessage.Subject = "LICENCIA DE OUTLOOK A PUNTO DE CADUCAR"
$emailMessage.IsBodyHtml = $true #true or false depends
$emailMessage.Body = "<h2>¡Licencia de Outlook a punto de caducar!</h2>"
$emailMessage.Body += "Su licencia de Outlook caducará en <FONT SIZE=4><strong>$dias días</strong></font>"
$emailMessage.Body += "<p>Por favor, siga las instrucciones para poder renovar su licencia</p>"
$emailMessage.Body += "<p>Archivo --> Cuenta de Office --> Cambiar licencia</p>"
$emailMessage.Body += "<p>Introduzca su usuario@tudominio.es y contraseña para renovarla</p>"
$emailMessage.Body += "<p>Si no lo hace, puede tener problemas con Outlook</p>"
$emailMessage.Body += "Gracias de antemano, le agradecemos su colaboración"
$emailMessage.Body += '<p><img src="https://www.maquinasvirtuales.eu/wp-content/uploads/2018/11/maquinas-virtuales-logo1.png"></p>'
$SMTPClient = New-Object System.Net.Mail.SmtpClient( $emailSmtpServer , $emailSmtpServerPort )
$SMTPClient.EnableSsl = $False
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential( $emailSmtpUser , $emailSmtpPass );
$SMTPClient.Send( $emailMessage )
##########################
# GENERA LOG DE ACCIONES
##########################
#PUNTO DE CONTROL
Write-Output "Quedan menos de 7 días, se envía correo"
Echo "$hora - Enviado correo a $usuariomodificado@tudominio.es. Su licencia caduca en $dias días" >> c:\Users\runzue\caducidadoutlook-$dia.log
}
else
{
##########################
# GENERA LOG SIN ACCIONES
##########################
#PUNTO DE CONTROL
Write-Output "Quedan más de 7 días, no se envía correo"
Echo "$hora - No se envía correo. Su licencia caduca en más de 7 días" >> c:\Users\runzue\caducidadoutlook-$dia.log
}
# BORRAMOS TXT
Remove-Item c:\Users\runzue\caducidadoutlook.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment