Wie exportiere ich eine detaillierte Liste der Registerkarte "Mitglied von" von Active Directory-Benutzern?

8

Ich bin gerade dabei, die Active Directory-Benutzerliste des Unternehmens, für das ich arbeite, neu zu strukturieren, und die Person, die das getan hat, hat schreckliche Arbeit geleistet und arbeitet natürlich nicht mehr hier.

Meine Frage lautet wie folgt: Ich möchte (idealerweise) eine Excel-Tabelle mit allen Informationen, die auf der Registerkarte "Mitglied von" eines Benutzerdiagramms enthalten sind.

Ich habe versucht, eine Abfrage zu erstellen, aber das Ergebnis gibt mir nur eine Liste der Benutzer, die "Mitglied von" etwas sind, nicht den tatsächlichen Inhalt der Registerkarte "Mitglied von".

Gibt es eine Möglichkeit, dies entweder über die Eingabeaufforderung oder direkt über Active Directory zu tun?

Faire Warnung: Ich weiß nichts über VBS und Powershell.


quelle

Antworten:

7

Wenn Sie Gruppenmitgliedschaften eines Benutzers erhalten möchten, führen Sie diesen PowerShell- Befehl aus:

Get-ADPrincipalGroupMembership $Username | Select Name | out-file "filepath" wo das Dokument gespeichert werden soll, einschließlich des Namens, unter dem das Dokument gespeichert werden soll "

Wo $Usernameist der Name des Benutzers, den Sie abfragen?

Josh
quelle
IMO ist dies das richtige Werkzeug für den Job.
Blaughw
3

Ich habe dies, Sie müssen ein wenig PowerShell lernen, um es in eine CSV zu sichern, im Moment wird es nur in eine Textdatei ausgegeben.

$users = Get-ADUser -Filter * -Properties * -SearchBase "OU=something,DC=domain,DC=net"
foreach ($user in $users) {
    $file = $user.Name + '_ACL'        
    (Get-ADUser –Identity $user –Properties MemberOf).MemberOf -replace '^CN=([^,]+),OU=.+$','$1' | Out-File c:\PSResults\$file.txt
    }

Ich habe mir nie die Zeit genommen, es für die CSV-Ausgabe zum Laufen zu bringen, da dies genau das tat, was ich brauchte.

- Wenn Sie möchten, dass es in eine CSV exportiert wird, ändern Sie einfach den Pfad für die Out-Datei in den Pfad, in dem es gespeichert werden soll, sowie den Namen der Datei document.csv, z. B. Out-File C: \ PSResults \ $ file.csv würde in eine CSV mit dem Namen $ file exportieren

mortenya
quelle
Ich habe gerade gesehen, dass Josh R mich geschlagen hat. Sein ist auch einfacher.
Mortenya
1
Ihre Version funktioniert jedoch mit niedrigeren Versionen von PowerShell.
Josh
Es stimmt, ich musste das berücksichtigen, wenn ich Skripte in meiner Gruppe teile, da ich der einzige mit PowerShell-Erfahrung bin und als solcher der einzige, der jemals ein Upgrade nach 2.0 durchgeführt hat
mortenya
Jetzt, wo ich darüber nachdenke, glaube ich, dass Get-ADPrincipalGroupMembershipes sich um 2.0 handelt. Ich bin mir nicht sicher, was ich dachte.
Josh
Vielen Dank für die Antwort. Ich werde es morgen bei der Arbeit mit Josh R versuchen, da es tatsächlich viel einfacher aussieht. Wenn ich kein Missverständnis habe, muss ich diese Abfrage für jeden Benutzer in meiner Domain generieren. Oder wenn ich Mortenyas verwenden würde, würde es beim ersten Mal eine vollständige Liste erzeugen? Ich möchte nur sicherstellen, dass ich richtig verstehe! :)
1

Sie können eine neue Abfrage erstellen und definieren, die auf die Organisationseinheit angewendet wird und Ihre Benutzer in "AD-Benutzer und -Computer" enthält, indem Sie diese Abfragezeichenfolge eingeben:

(&(&(&(&(objectCategory=user)(userAccountControl=512)))))

Exportieren Sie dann die Ergebnisse mithilfe der "Exportliste" oben im AD-Fenster in eine CSV.

user320631
quelle
0

Um die Datei in eine CSV zu übertragen, ersetzen Sie einfach "Out-File c: \ PSResults \ $ file.txt" in Ihrem Code durch "Export-CSV-Pfad c: \ PSResults \ $ file.csv -NoTypeInformation".

Es würde also ungefähr so ​​aussehen:

$users = Get-ADUser -Filter * -Properties * -SearchBase "OU=something,DC=domain,DC=net"
foreach ($user in $users) {
$file = $user.Name + '_ACL'        
(Get-ADUser –Identity $user –Properties MemberOf).MemberOf -replace '^CN=([^,]+),OU=.+$','$1' | Export-CSV -path c:\PSResults\$file.csv -NoTypeInformation
}

Wie andere bereits geschrieben haben, ist das Folgende am besten zu verwenden, da es sich um einen einfachen Einzeiler handelt:

Get-ADPrincipalGroupMembership USERNAME | Select Name | Export-CSV -path C:\Temp\file.csv -NoTypeInformation
Henri Muldre
quelle
Dies wird nicht funktionieren, wenn es verschachtelte Gruppenmitglieder gibt. Wie ein Benutzer ein Mitglied von 20 Gruppen ist, wird es nicht angezeigt
user420934