Alle Benutzerkonten in einer Windows-Domänengruppe über die Befehlszeile auflisten?

765
Nick

Ich möchte \ Befehl erstellen, um alle Benutzerkonten mit allen Details eines Windows-Domänencontrollers (Server 2012 R2) aus einer angegebenen Gruppe aufzulisten.

Die Verwendung von "Netzbenutzern" wäre perfekt, aber ich habe keine Idee, wie dieser Befehl für alle Benutzer in einer Aktion ausgegeben werden kann (dh ich muss diesen Befehl für jeden Benutzer separat schreiben, wenn ich Details kennen lernen möchte).

Wenn es keine Möglichkeit gibt, "Netzbenutzer" zu verwenden, dann

WMIC USERACCOUNT 

wäre auch schön. Ich brauche aber auch Informationen aus der angegebenen Gruppe (Enterprise-Admins, Domain-Admins usw.).
Ich weiß, dass ich PowerShell verwenden kann, aber ich versuche eine Lösung zu finden CMD.

2

2 Antworten auf die Frage

1
Pimp Juice IT

Sie können PowerShell einfach in einem Batch-Skript verwenden, um die erforderliche Logik in cmd auszuführen, um das Beste aus beiden Welten zu erhalten. Ich habe unten ein einfaches Beispiel eingefügt, in dem Sie einfach den GroupNameVariablenwert so ändern, dass er die Gruppe ist, die Sie abfragen müssen. Dadurch erhalten Sie eine Liste der Mitglieder dieser Gruppe in cmd, genau wie Sie es erwarten.

Da Sie sagten, Sie würden dies auf einem Domänencontroller ausführen, verwenden Sie einfach Get-ADGroupMember und erledigen Sie die Aufgabe mit cmd ganz nach Ihren Wünschen.

Batch Script (nur für Mitglieder einer Gruppe)

Hinweis: Fügen Sie den -RecursiveSchalter hinzu, um ggf. Mitglieder anderer verschachtelter Gruppenmitglieder abzurufen.

@ECHO OFF  SET "GroupName=Domain Admins" CALL :DynamicPSScriptBuild  SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'" PAUSE EXIT /B  :DynamicPSScriptBuild SET PSScript=%temp%\~tmp%~n0.ps1 IF EXIST "%PSScript%" DEL /Q /F "%PSScript%" ECHO Get-ADGroupMember -Identity "%GroupName%" ^| Select-Object Name>>"%PSScript%" GOTO :EOF 

Ausgabebeispiel


Wenn Sie mehr als nur die Gruppenmitglieder der abgefragten Gruppe benötigen, können Sie dieses Detail in einer Variablen speichern und dann das Arrayobjekt der Variablen an eine ForEach-Object- Schleife übergeben und dann den Get-ADUser und iterieren ziehen Sie die spezifischen Eigenschaften nach Bedarf aus.

Batch-Skript (Gruppenmitglieder plus weitere Details)

@ECHO OFF  SET "GroupName=Domain Admins" CALL :DynamicPSScriptBuild  SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'" PAUSE EXIT /B  :DynamicPSScriptBuild SET PSScript=%temp%\~tmp%~n0.ps1 IF EXIST "%PSScript%" DEL /Q /F "%PSScript%" ECHO $m = Get-ADGroupMember -Identity "domain admins" ^| Select-Object SamAccountName>>"%PSScript%" ECHO $m ^| %% >>"%PSScript%" GOTO :EOF 

Ausgabebeispiel


Weitere Ressourcen

Hm. Vielen Dank! Ich werde PowerShell verwenden, wenn ich keine Lösung für CMD finde. Es scheint, dass die Ausgabe nicht sehr informativ ist. Dann verwende ich "Net-Benutzer". Ich erhalte viele Informationen wie: Kommentar, Passwort letzte Aktualisierung, letzte Anmeldung, globale Gruppenmitgliedschaft usw. Ich denke, ich muss "Select Object name" in "Select" ändern. Nick vor 5 Jahren 0
Ja. "Ich möchte \ einen Befehl finden, um alle Benutzerkonten mit allen Details aufzulisten" - mb meine Formulierung war nicht wirklich gut. Nick vor 5 Jahren 0
@Nick Alle Details pro Konto sind .... `Get-ADUser""-Properties *" Was kann ich beim Testen feststellen, damit Sie die Mitglieder der Gruppe kennen lernen möchten und dann für jedes dieser Mitglieder auch alle Details dieses Befehls wünschen? Pimp Juice IT vor 5 Jahren 0
@Nick Ich habe gerade meine Antwort mit mehr Details und einem kleinen Beispiel aktualisiert, aber so funktioniert das und es ist auch nicht so schwierig. Sie können das erweitern und andere Eigenschaften und Werte erhalten, falls erforderlich in ein anderes Format einfügen. Helfen Sie mir, die benötigten Werte genauer zu verstehen, und ich werde sehen, ob ich weiter helfen kann, aber dies ist die Logik, die Sie verwenden könnten Den Rest von dort zu bekommen ist trivial. Pimp Juice IT vor 5 Jahren 0
@Nick Zum Schluss noch zu Ihrer Information, falls Sie Interesse haben ... Ich habe in der Vergangenheit bereits Befehle wie "ldifde", "dsget group" und "dsquery group" für ähnliche Zwecke verwendet, aber PowerShell ist viel einfacher und robuster. Einige dieser Befehle werden lang und hässlich und ich kann mich nicht erinnern, ob sie alle Details enthält, die Sie benötigen. Ich habe auch vor vielen Jahren nach einer cmd-Lösung gesucht, und das ist, was ich aus einem alten Satz von Skripten ausgegraben habe, die ich in der Vergangenheit verwendet habe. PowerShell sollte der Weg für Windows Domain Admin-Sachen mit dieser Aufgabe sein, denke ich. Sie können es immer noch über batch oder cmd.exe ausführen. Viel Glück trotzdem !! Pimp Juice IT vor 5 Jahren 0
0
dave

net group WHATEVERlistet die Mitglieder der Gruppe auf WHATEVER.

Das Äquivalent für eine lokale Gruppe ist net localgroup WHATEVER.

Leider gibt es keine verschachtelten Gruppenmitgliedschaften (auch nicht * erwähnte *, dass die Gruppe andere Gruppen als Mitglieder hat, was ihre Ausgabe tatsächlich etwas irreführend macht). grawity vor 5 Jahren 0