diff --git a/Windows/odbc.ps1 b/Windows/odbc.ps1 new file mode 100644 index 0000000..01015a7 --- /dev/null +++ b/Windows/odbc.ps1 @@ -0,0 +1,70 @@ +#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 \ No newline at end of file