#Script créé par Nicolas Lang - Sous licence CC-BY-SA #https://nicolaslang.fr $ou = @("OU=Servers,OU=SITE 1,DC=domaine,DC=local","OU=Domain Controllers,DC=domaine,DC=local") #définition des UO $tableauerreurs = New-object System.Collections.ArrayList #création d'un tableau contenant les erreurs $listesrv = New-Object System.Collections.ArrayList #création d'un tableau contenant la liste des serveurs $tableauodbc =New-object System.Collections.ArrayList #création d'un tableau contenant la liste des connecteurs trouvés $ou | % { $serveurs = Get-ADComputer -SearchBase $_ -Filter * -Properties "OperatingSystem" $listesrv.AddRange($serveurs) #nous ajoutons la liste contenue dans $serveurs au tableau } $listesrv = $listesrv | Where-Object {$_.operatingsystem -like "Windows*"} |Sort-Object -Property name #Nous filtrons ce qui comporte "windows" et trions par le nom $listesrv | Select-Object -Property name foreach ($serveur in $listesrv) { $key = "SOFTWARE\ODBC\ODBC.INI" $types = @([Microsoft.Win32.RegistryHive]::CurrentUser,[Microsoft.Win32.RegistryHive]::LocalMachine) foreach ($type in $types) { $regkey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($type, $($serveur.name)) #nous ouvrons la ruche distante sur l'ordinateur scanné if (!$?) { $tableauerreurs.add([PSCUSTOMOBJECT]@{ "Serveur" = $($serveur.name) "Region" = "ODBC $type clé $type\$key" "Erreur" = $error[0].Exception.Message }) } else { $regkey = $regkey.opensubkey($key) #ouverture de la clé contenant les infos d'ODBC if ($regkey -ne $null) { #on récupère l'intégralité des clés enfants, et pour chaque on va voir s'il y'a des informations d'UID foreach ($value in $regkey.GetSubKeyNames() ) { $subkey = $regkey.OpenSubKey($value) if ($subkey.GetValueNames() -contains "UID") { $user = $subkey.getValue("UID") #on récupère le nom d'utilisateur $pass = $subkey.getValue("PWD") #et également le mot de passe $tableauodbc.Add([PSCUSTOMOBJECT]@{ "Serveur" = $($serveur.name) "Type ODBC" = "$type" "Chemin ODBC" = "$type\$key\$subkey" "Utilisateur" = $user }) #et on ajoute le tout dans le tableau } } #fin foreach valeur dans sous clés registre } } } } #fin foreach $tableauodbc