Powershell: Avisar a usuarios caducidad de Outlook
El otro día os enseñé un script de Powershell, que nos permitía mandar mensajes cuando los discos de FSLogix llegaban a cierto tamaño:
Powershell: Script para comprobar perfiles VHDX FSLogix en Citrix
Voy a re-aprovechar el script con ciertas modificaciones. En este caso, va a mandar un mensaje, pero lo que buscamos es saber los días que le quedan al usuario para que se caduque su licencia de Outlook, de forma que les mandamos unas instrucciones para que renueven su licencia manualmente.
Como la otra vez encriptamos el usuario y la contraseña del usuario que se conecta al servidor mediante BASE64:
1 2 3 4 5 6 7 8 9 10 11 |
PS C:\WINDOWS\system32> $Text = 'pruebascript' $Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text) $EncodedText =[Convert]::ToBase64String($Bytes) $EncodedText $Text = 'elblogdenegu@maquinasvirtuales.eu' $Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text) $EncodedText =[Convert]::ToBase64String($Bytes) $EncodedText cAByAHUAZQBiAGEAcwBjAHIAaQBwAHQA ZQBsAGIAbABvAGcAZABlAG4AZQBnAHUAQABnAG0AYQBpAGwALgBjAG8AbQA= |
Os dejo el script (se puede lanzar vía GPO en el logon del usuario): https://gist.github.com/raulunzue/b51123f033b572c532ab2d81ebc43bfd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# 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/ipsoapoo/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 |
Espero os parezca interesante…ya que es gratis, comparte ;P
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?