70 lines
2.5 KiB
PowerShell
70 lines
2.5 KiB
PowerShell
|
#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
|