Dises Skript durchsucht ein Attribute aller Benutzerkonten im Active Directory nach einem bestimmten Wert. Wildcards sind auch möglich.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#--- Config # AD Attribut festlegen welches nach dem Suchwort zum Filtern der User durchsucht werden soll $SearchAttribute = "title" # Suchwort/ String festlegen nach dem in oben deklariertem AD Attribut gesucht werden soll $SearchString = "Test" # Deklarieren der Wildcard, "" wenn das AD Attribut gleich dem Suchwort sein und dieses nicht nur enthalten sein soll $WildCard = "*" # Zu durchsuchende Domäne/ Organisationseinheit festlegen $SearchBase = "DC=Schiffer,DC=IT,DC=DE" # Soll ein CSV Export erstellt werden? $CSVerstellen = $True # Pfad der CSV Datei $CSVPath = "C:\Pfad\user.csv" # Ausgabe in Powershell: CMD oder Grid $Output = "Grid" #--- Ende Config # Versuche Try { # Wenn eine CSV erstellt werden soll (Config Block) erstelle die Datei und schreibe die Titel hinein If ($CSVerstellen -eq $True) { Add-Content $CSVPath "UserID, Vorname, Nachname" -Encoding UTF8 } # Wenn ein Fehler beim Versuch passiert } Catch { # Gebe folgende Meldung aus Write-Host "Fehler beim Erstellen/ Bearbeiten der CSV-Datei, bitte Pfad in der Config überprüfen!" # Stoppe das Skript Exit } # Import des PS AD Moduls Import-Module ActiveDirectory # Auslesen des AD auf welche Benutzerkonten die konfigurierten Daten zutreffen $UserArray = Get-ADUser -SearchBase $SearchBase -Filter { enabled -eq 'True' } -Properties samAccountname, $SearchAttribute | Where-Object { $_.$SearchAttribute -like $WildCard+$SearchString+$WildCard } # Ausgabe des UserArray If ($Output -eq "CMD") { ForEach ($User in $UserArray) { Write-Host $User.samAccountname $User.Name $User.GivenName } } elseif ($Output -eq "Grid") { $UserArray | Out-GridView } # Ausgabe in CSV mit UTF8 Codierung If ($CSVerstellen -eq $True ) { # Für jeden einzelnen Benutzer in dem Array ForEach ($User in $UserArray) { # Fülle eine temporäre Variable für den Schreibvorgang in die CSV-Datei $Temp = $User.SamAccountName + ", " + $User.GivenName + ", " + $User.Surname # Schreibt die temporäre Variable in die CSV-Datei Add-Content $CSVPath "$Temp" -Encoding UTF8 } } # Ausgabe wie viele Benutzer entsprechend der Konfiguration gefunden wurden Write-Host "`n" $UserArray.Count "User entsprechend der Suchkriterien gefunden" |