juin
2011
La supervision des contrôleurs de domaine est facilitée par des outils tels que le vénérable sonar ou son descendant ultrasound (google -> microsoft …) .
On peut aussi être intéressé par une information quasi instantanée de premier niveau, à savoir, repondent-ils au ping…
Dans cet esprit, j’ai ce vieux bout de code, interrogeant le domaine, montant la liste des DC et affichant en vert quand c’est bon, rouge quand ça répond pas.
Le gros du code tourne autour d’une récupération d’info WMI, comme souvent..
$objDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$dc=$objDomain.FindAllDomainControllers() | Select-Object Name,IpAddress |sort name
for ($i=0; $i -le $dc.count-1 ;$i++) {
Write-Host -ForegroundColor "white" $dc[$i].name -NoNewLine " - IP-> "
if ($ping.send($dc[$i].name).status -eq "success" )
{ Write-Host -ForegroundColor "green" -NoNewLine $dc[$i].ipaddress}
else
{ Write-Host -ForegroundColor "red" -NoNewLine $dc[$i].ipaddress}
Write-Host -ForegroundColor "white" -NoNewLine " - R-> "
if ($dc[$i].name.substring(0,2) -eq "cm")
{$ip=$dc[$i].Ipaddress.substring(0,$dc[$i].Ipaddress.length -3) + "XXX"; #<- à modifier pour votre pattern à vous
if ($ping.send($ip).status -eq "success" )
{ Write-Host -ForegroundColor "green" $ip}
else
{ Write-Host -ForegroundColor "red" $ip}
}
else
{
$Config = Get-Wmiobject win32_NetworkAdapterConfiguration -comp $dc[$i].name
for ($j=0; $j -le $config.count -1;$j++) {
if ($config[$j].IPAddress -ne $null ){
if ($ping.send($config[$j].DefaultIPGateway).status -eq "success" )
{ Write-Host -ForegroundColor "green" $config[$j].DefaultIPGateway}
else
{ Write-Host -ForegroundColor "red" $config[$j].DefaultIPGateway}
}
}
}
}
Il sera possible de profiter de la boucle principale pour rajouter des tests variés, tels que la présence ou non de services tournant sur les serveurs (DFS, antivirus, spooler)… j’y reviendrai…