#Script créé par Nicolas Lang - Sous licence CC-BY-SA #https://nicolaslang.fr #Ajout du module AD pour les rebelles de la V1/ V2 ;) ipmo activedirectory #Obtention de la liste des serveurs $serveurs = Get-ADComputer -SearchBase "OU=Servers,DC=domaine,DC=local" -filter * | Select-Object -ExpandProperty name #Creation du tableau qui stockera les données $tableau = New-Object System.Collections.ArrayList #Fonction utilisée pour stocker les données ET les erreurs function addarray([string]$serveur,[string]$description=$null,[string]$serveur1=$null,[string]$serveur2=$null) { #définition de l'objet envoyé dans le tableau $object = [PSCUSTOMOBJECT]@{ "Ordinateur" = $serveur "Carte réseau" = $description "Serveur 1" = $serveur1 "Serveur 2" = $serveur2 } return $object } foreach ($serveur in $serveurs) { Write-Host "Analyse de $serveur" #On teste si ne réponds pas au ping. Si c'est le cas, on stocke l'erreur dans le tableau if (!(Test-Connection $serveur -Count 1)) { $tableau.Add($(addarray -serveur $serveur -serveur1 $($Error[0].Exception.Message) -serveur2 "Erreur Ping")) } else { #Cette commande obtient la configuration de différentes cartes réseau. Pour filtrer les cartes actives, il suffit de savoir si l'adresse IP n'est pas vide. $configuration = Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $serveur | where-object {$_.ipaddress -ne $null} #Si la derniere commande renvoie une erreur, on enregistre cette erreur if (!$?) { $tableau.Add($(addarray -serveur $serveur -serveur1 $($Error[0].Exception.Message )-serveur2 "Erreur")) } else { foreach ($entry in $configuration) { #Si aucun DNS n'est renseigné sur la carte, alors on le précise dans le tableau if (!($($entry.DNSServerSearchOrder))) { $tableau.Add($(addarray -serveur $serveur -description $($entry.caption) -serveur1 "Aucun DNS" -serveur2 "Aucun DNS")) } else { $tableau.Add($(addarray -serveur $serveur -description $($entry.caption) -serveur1 $($entry.dnsserversearchorder[0]) -serveur2 $($entry.dnsserversearchorder[1]))) } } } } } #Et on exporte le tout sur le bureau :) $tableau | Export-Csv -Path $([environment]::GetFolderPath("Desktop")+"\DNS_SERVEURS_"+$(get-date -Format mm_dd_yyyy)+".csv") -NoTypeInformation -Encoding UTF8 -Delimiter ";"