Dans la série « J’entretiens proprement mon ActiveDirectory », je vais vous proposer aujourd’hui un script vous permettant de lister dans un fichier CSV les objets Computer qui n’ont pas donné de signe de vie sur le domaine depuis un certain nombre de jours spécifié (par défaut dans ce script, 60).
Il est important de bien faire attention aux OU sur lesquelles nous souhaitons effectuer la recherche, afin d’éviter de supprimer des stations qui ne servent que ponctuellement ou qui ne sont positionnées sur le réseau que lors des campagnes de patchs par exemple. Il conviendra donc de modifier dans le script le paramètre SearchBase qui est passé lors de la requête ActiveDirectory.
$csvoutput = "$env:temp\orphan-computers.csv"
Write-Host "Orphan Computer objects listing script"
Write-Host "======================================"
Write-Host ""
Write-Host "This script will output to a file a list of Computer objects in the ActiveDirectory that haven't logged onto the domain for a specified number of days."
[int]$nbdays = Read-Host "Number of days before considering a Computer object orphan ? (default: 60)"
if ($nbdays -eq "") { $nbdays = 60 }
$today = Get-Date
$complist = Get-AdComputer -filter * -Properties LastLogonDate -SearchBase "OU=serveurs,DC=superdomaine,DC=com"
foreach ($computer in $complist) {
$lastlogondate = $computer.LastLogonDate
$fqdn = $computer.DNSHostName
if ($lastlogondate -eq $null) { Add-Content $csvoutput "$fqdn,'Object never logged on'" }
elseif ($lastlogondate.AddDays($nbdays) -lt $today) {
Add-Content $csvoutput "$fqdn,$lastlogondate"
}
}
Write-Host "All done. File is located in $env:temp."
explorer $env:temp
Les stations ont leur nom DNS et leur dernière date de communication avec le domaine de renseignées dans un fichier CSV écrit dans le répertoire des fichiers temporaires.