Blog/Windows/odbc.ps1

70 lines
2.5 KiB
PowerShell
Raw Normal View History

2023-12-16 17:03:05 +01:00
#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