Propósito
Una opción más para mantener nuestro Active Directory al día es asegurarnos de que no existan equipos que ya no estén en uso. Deberíamos procurar que los PCs estén lo más actualizados posible: últimas actualizaciones, parches, configuraciones de seguridad (GPOs), patrones de antivirus, etc. Además, un equipo que no se conecta o que ya no está activo sigue consumiendo licencias innecesariamente.
Para tener un control mínimo, he preparado este script que se ejecuta una vez por semana y informa de los equipos que llevan más de 30 y 60 días sin contactar con nuestro AD.
Pasos
|
#
========================== # VARIABLES DEL USUARIO #
========================== $SMTPServer =
"smtp.com" $SMTPPort = 25 $From =
"HelpDesk@Miempresa.com" $To =
"alertas@Miempresa.com" $Subject = "OU Computers que
llevan tiempo sin conectar" # CONFIGURACIÓN #
========================== Import-Module
ActiveDirectory $Hoy =
(Get-Date) $Dias30 =
$Hoy.AddDays(-30) $Dias60 =
$Hoy.AddDays(-60) # OBTENER EQUIPOS AD #
========================== $Equipos =
Get-ADComputer -Filter * -Properties Description, LastLogonTimestamp,
CanonicalName | Select-Object Name, Description,
@{Name="OU";Expression={($_.CanonicalName -replace
"^[^/]+/","")}},
@{Name="LastLogon";Expression={[DateTime]::FromFileTime($_.LastLogonTimestamp)}} # FILTRADOS #
========================== $Entre30y60 =
$Equipos | Where-Object { $_.LastLogon -le $Dias30 -and $_.LastLogon -gt
$Dias60 } $Mas60 = $Equipos | Where-Object {
$_.LastLogon -le $Dias60 } #
GENERAR TABLAS HTML # ========================== function Convert-ToHtmlTable {
param($Data, $Titulo)
if ($Data.Count -eq 0) { return
"<h3>$Titulo</h3><p>No hay equipos en este
rango.</p>" }
$Data | Select-Object Name, Description, OU, LastLogon | ConvertTo-Html -Fragment
-PreContent "<h3>$Titulo</h3>" } $Html60 = Convert-ToHtmlTable -Data $Mas60
-Titulo "Equipos sin conectar mas de 60 dias" #
EMAIL HTML # ========================== $Body = @" <html> <head> <style> table { border-collapse: collapse;
width: 100%; } th, td { border: 1px solid #999;
padding: 6px; text-align: left; } th { background-color: #f2f2f2; } h3 { font-family: Arial; } </style> </head> <body> <h2>Informe
de equipos que llevan tiempo sin conectar</h2> <p>Generado desde SRVDC04
$(Get-Date -Format "dd/MM/yyyy HH:mm")</p> $Html30_60 <br> $Html60 </body> </html> "@ # ENVÍO DEL EMAIL # ========================== Send-MailMessage -From $From -To
$To -Subject $Subject -Body $Body -BodyAsHtml `
-SmtpServer $SMTPServer -Port $SMTPPort |
El resultado vendría a ser un email así:


No hay comentarios:
Publicar un comentario