Blog/Active Directory/dns_server_check.ps1

57 lines
2.5 KiB
PowerShell
Raw Normal View History

2023-12-16 17:06:25 +01:00
#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 ";"