Maniska Geschrieben 10. März 2022 Geschrieben 10. März 2022 Hallo zusammen, ich bin gerade dabei ein total vermülltes AD auszumisteten in dem wohl noch nie etwas gelöscht wurde, und brauch mal wieder Hilfe bei einem Script. Was ich möchte: Auslesen aller deaktivierter Userkonten im AD Vor-/Nachname (wenn gesetzt), die SID des Objektes und die letzte Anmeldung die Gruppenmitgliedschaften der besagten Konten Was ich habe: Get-ADUser -filter {(Enabled -eq $false)} -properties GivenName,Surname,objectSid,lastLogonTimestamp -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach { „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName } > C:\Gruppen.txt Was fehlt: Aktuell bekomme ich es nur hin, dass er mir eine einzelne Datei mit allen Infos ablegt. Ich hätte aber gerne eine Datei pro User, mit dem SamAccountName als Dateiname. Da klemmt es aber irgendwie, das bekomme ich nicht hin. Zitieren
0 DoctorB Geschrieben 10. März 2022 Geschrieben 10. März 2022 Wäre es eine Option, die Dateierstellung in die for each zu packen und den Dateinamen dann entsprechend: C:\Gruppen_$SamAccountName.txt Zitieren
0 DoctorB Geschrieben 11. März 2022 Geschrieben 11. März 2022 Get-ADUser -filter {(Enabled -eq $false)} -properties GivenName,Surname,objectSid,lastLogonTimestamp -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach { „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName | out-file "C:\Temp\gruppen_$($_.SamAccountName).txt"} Ich hab das mal getestet. Dir wird dann eine Textdatei mit dem Namen "Gruppen_SamAccountName" erzeugt und dort stehen die Berechtigungen drin. Ich bin auch direkt so frei und nutze das auch bei uns Zitieren
0 Maniska Geschrieben 11. März 2022 Autor Geschrieben 11. März 2022 Get-ADUser -filter {(Enabled -eq $false)} -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach { „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName | out-file "C:\Temp\gruppen\_$($_.SamAccountName).txt"} So, mal angepasst und jetzt schriebt er auch kein "Gruppen_" mehr davor, sondern in den Ordner Gruppen Allerdings will ich die Attribute "GivenName", "Surname", "objectSid" und "lastLogonTimestamp" auch in der Datei haben... Zitieren
0 DoctorB Geschrieben 14. März 2022 Geschrieben 14. März 2022 Habe da jetzt über eine Stunde dran gesessen und nichts wirklich produktives bei geschafft.... Zitieren
0 Gast Sledgeheammer Geschrieben 14. April 2022 Geschrieben 14. April 2022 Servus, Wenn es noch relevant ist... geht sicherlich auch kürzer aber das ist mein Way2Go xD $UserObject = [ordered] @{ "GivenName" = "" "Surname" = "" "objectSid" = "" "lastLogonTimestamp" = "" } $UserTable = @() $users = Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=514)" -SearchBase "OU=Users,DC=login,DC=contoso,DC=com" | select GivenName,Surname,objectSid,lastLogonTimestamp,SamAccountName foreach ($user in $users) { $path = "C:\Temp\export\" + $user.SamAccountName + ".csv" $UserObject."GivenName" = $user.GivenName $UserObject."Surname" = $user.Surname $UserObject."objectSid" = $user.ObjectSid $UserObject."lastLogonTimestamp" = $user.lastLogonTimestamp $UserRecord = New-Object PSObject -Property $UserObject $UserTable = $UserRecord $UserTable | Export-Csv -Path $path -NoTypeInformation } Zitieren
0 Sledgeheammer_V2 Geschrieben 14. April 2022 Geschrieben 14. April 2022 Ahhh Sorry, Ich hab das mit den Gruppen übersehen. Das macht die Sache bisschen schwieriger. Aber nun hier bitte: $UserObject = [ordered] @{ "GivenName" = "" "Surname" = "" "objectSid" = "" "lastLogonTimestamp" = "" "memberOf" = "" } $UserTable = @() $users = Get-ADUser -Properties * -ldapFilter "(useraccountcontrol=514)" -SearchBase "OU=user,DC=login,DC=cortoso,DC=de" foreach ($user in $users) { $UserObject.Clear() $path = "C:\Temp\export\" + $user.SamAccountName + ".csv" $UserObject."GivenName" = $user.GivenName $UserObject."Surname" = $user.Surname $UserObject."objectSid" = $user.ObjectSid $UserObject."lastLogonTimestamp" = $user.lastLogonTimestamp Get-ADPrincipalGroupMembership $user.SamAccountName | select name | % {$UserObject."memberOf" += $_.Name + ", "} $UserRecord = New-Object PSObject -Property $UserObject $UserTable = $UserRecord $UserTable | Export-Csv -Path $path -NoTypeInformation } Kann jemand den Beitrag oben löschen? Ich war da nicht angemeldet 😕 Zitieren
Frage
Maniska
Hallo zusammen,
ich bin gerade dabei ein total vermülltes AD auszumisteten in dem wohl noch nie etwas gelöscht wurde, und brauch mal wieder Hilfe bei einem Script.
Was ich möchte:
Was ich habe:
Get-ADUser -filter {(Enabled -eq $false)} -properties GivenName,Surname,objectSid,lastLogonTimestamp -SearchBase "DC=contoso,DC=local" -SearchScope Subtree | ForEach { „“ ; $_.SamAccountName ; „—“ ; Get-ADPrincipalGroupMembership $_ | Select-Object SamAccountName } > C:\Gruppen.txt
Was fehlt:
Aktuell bekomme ich es nur hin, dass er mir eine einzelne Datei mit allen Infos ablegt. Ich hätte aber gerne eine Datei pro User, mit dem SamAccountName als Dateiname. Da klemmt es aber irgendwie, das bekomme ich nicht hin.
6 Antworten auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.