Propósito
Localizar los PCs/host que lleven cierto tiempo sin contactar contra nuestro AD, ya sea porque se han perdido, los han robado, se han roto, etc... el tema es que hay que sacarlos porque podrían estar consumiendo licencias, rompiendo nuestras estadísticas de parcheo, los antivirus sin actualizar, etc..
Pasos
Para localizarlos he creado 2 scripts
Script 1:
Descripcion: PCs sin conectar en 90 dias (se puede modificar fácilmente la cantidad de días). La idea sería ejecutarlo una vez al día para estar al corriente de nuestro inventario. Se podría añadir a una tarea programada.
# Parámetros
$DiasSinConectar = 90 # 3 meses aproximados
$FechaLimite = (Get-Date).AddDays(-$ DiasSinConectar)
# Nombre del fichero con fecha y hora
$TimeStamp = Get-Date -Format "yyyyMMdd_HHmmss"
$FicheroSalida = "Equipos_NoConectan_Desde_ 3Meses_$TimeStamp.csv"
# Consulta a AD
Import-Module ActiveDirectory
Get-ADComputer -Filter * -Properties lastLogonTimestamp, Description |
Select-Object Name,
Description,
@{Name='UltimoLogon'; Expression={[DateTime]:: FromFileTime($_. lastLogonTimestamp)}} |
Where-Object { $_.UltimoLogon -lt $FechaLimite } |
Export-Csv -Path $FicheroSalida -NoTypeInformation -Encoding UTF8
Write-Host "Proceso finalizado. Archivo generado: $FicheroSalida"
Su salida sería algo así:
Script 2:
Descripcion. PC búsqueda manual, pide en pantalla cuantos días quiere que retroceda para comprobar.
# Cargar módulo de Active Directory
Import-Module ActiveDirectory
# Pedir días por pantalla
$DiasSinConectar = Read-Host "Introduce el número de días que llevan los PCs sin conectar"
$FechaLimite = (Get-Date).AddDays(-[int]$ DiasSinConectar)
# Convertir timestamp y filtrar
$Equipos = Get-ADComputer -Filter * -Properties lastLogonTimestamp, Description |
Select-Object Name,
Description,
@{Name='UltimoLogon'; Expression={[DateTime]:: FromFileTime($_. lastLogonTimestamp)}} |
Where-Object { $_.UltimoLogon -lt $FechaLimite }
# Mostrar por pantalla
Write-Host ""
Write-Host "Equipos encontrados que llevan más de $DiasSinConectar días sin conectar:" -ForegroundColor Cyan
$Equipos | Format-Table -AutoSize
Write-Host ""
# Número de equipos
$Total = $Equipos.Count
# Crear nombre del fichero con fecha/hora y número de PCs
$TimeStamp = Get-Date -Format "yyyyMMdd_HHmmss"
$NombreFichero = "PCs_SinConectar_${ DiasSinConectar}dias_${Total} equipos_$TimeStamp.csv"
# Exportar CSV
$Equipos | Export-Csv -Path $NombreFichero -NoTypeInformation -Encoding UTF8
Write-Host "Exportación completada. Archivo generado: $NombreFichero" -ForegroundColor Green
La salida sería algo así
by GoN | Published: Feb 2026 | Last Updated:


No hay comentarios:
Publicar un comentario