Das Get-ADGroupMember
Cmdlet von PowerShell gibt Mitglieder einer bestimmten Gruppe zurück. Gibt es ein Cmdlet oder eine Eigenschaft, um alle Gruppen abzurufen, zu denen ein bestimmter Benutzer gehört?
Ich habe meinen Fehler behoben: Get-Member
sollte sein Get-ADGroupMember
.
net user /domain username
auch andere Methoden unter Get Groups, bei denen ein Benutzer Mitglied ist. Verwenden von PowerShellAntworten:
Get-ADPrincipalGroupMembership wird dies tun.
quelle
get-aduser $username -Properties memberof | select -expand memberof
hat aber gut funktioniert.import-module activedirectory
Powershell-Befehlszeile ein. Diese sollte dann ausgeführt werden.Einzeilig, keine Module erforderlich, verwendet den aktuell angemeldeten Benutzer:
Fragen zu diesem vbs / Powershell-Artikel: http://technet.microsoft.com/en-us/library/ff730963.aspx
quelle
$env:username
auf geändert$username
und festgelegt$username = "testuser"
, um andere Benutzersuchen einfach durch Variablen zu ersetzen.Eine prägnantere Alternative zu der von Canoas veröffentlichten, um eine Gruppenmitgliedschaft für den aktuell angemeldeten Benutzer zu erhalten.
Ich bin in diesem Blog-Beitrag auf diese Methode gestoßen: http://www.travisrunyard.com/2013/03/26/auto-create-outlook-mapi-user-profiles/
Eine noch bessere Version, die einen regulären Ausdruck verwendet, um den LDAP-Guff zu entfernen und nur die Gruppennamen belässt:
Weitere Informationen zur Verwendung des Beschleunigers vom Typ [ADSISEARCHER] finden Sie im Blog des Scripting Guy: http://blogs.technet.com/b/heyscriptingguy/archive/2010/08/24/use-the-powershell-adsisearcher-type -accelerator-to-search-active-directory.aspx
quelle
| Sort-Object
, um es noch besser lesbar zu machen.Old School Weg von CMD:
quelle
quelle
Wenn Sie Get-ADPrincipalGroupMembership nicht zum Laufen bringen können, können Sie versuchen, sich als dieser Benutzer anzumelden, und dann verwenden.
quelle
$id = [Security.Principal.WindowsIdentity]("username")
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | % {$_.Translate([Security.Principal.NTAccount])}
.Erhalten Sie eine Gruppenmitgliedschaft für einen Benutzer:
Siehe Gruppenmitgliedschaft für einen Benutzer abrufen
Siehe aber auch die kostenlosen PowerShell-Befehle von Quest für Active Directory .
[ Bearbeiten : Der Befehl Get-ADPrincipalGroupMembership ist seit Version 2 mit Windows 2008 R2 in Powershell enthalten. Siehe die Antwort von kstrauss unten.]
quelle
Get-Member
ist ein Cmdlet zum Auflisten der Mitglieder eines .NETobject
. Dies hat nichts mit der Benutzer- / Gruppenmitgliedschaft zu tun. Sie können die Gruppenmitgliedschaft des aktuellen Benutzers folgendermaßen abrufen:Wenn Sie Zugriff auf Gruppeninformationen beliebiger Benutzer benötigen, ist der Vorschlag von @tiagoinu, die Quest AD-Cmdlets zu verwenden, der bessere Weg.
quelle
Importieren Sie zunächst das Modul activedirectory:
Geben Sie dann diesen Befehl ein:
Dadurch werden die Mitglieder der angegebenen Gruppe angezeigt.
quelle
Keine Notwendigkeit für lange Skripte, wenn es sich um einen einfachen Einzeiler handelt.
Befehl QUEST
MS AD-Befehl
Ich finde, dass der MS AD cmd schneller ist, aber einige Leute mögen die Quest besser.
Steve
quelle
Get-Member dient nicht zum Abrufen der Gruppenmitgliedschaft des Benutzers. Wenn Sie eine Liste der Gruppen erhalten möchten, zu denen ein Benutzer auf dem lokalen System gehört, können Sie dies tun, indem Sie:
Ersetzen Sie in der obigen Abfrage DemoUser1 durch den gewünschten Benutzernamen und den Domänennamen durch Ihren lokalen Computernamen oder Domänennamen.
quelle
Verwenden:
Dadurch wird die Ausgabe des Befehls in eine CSV- Datei geleitet.
quelle
Dies sollte Ihnen die Details für den aktuellen Benutzer liefern. Powershell nicht benötigt.
whoami /groups
quelle
Es ist nur eine Zeile:
Ende des :)
quelle
select -expandproperty memberof
wird die Ausgabe ein wenig lesbarer / nützlicher.Ich habe eine PowerShell-Funktion namens Get-ADPrincipalGroupMembershipRecursive geschrieben. Es akzeptiert den DSN eines Benutzers, Computers, einer Gruppe oder eines Dienstkontos. Es ruft eine erste Liste von Gruppen aus dem memberOf-Attribut des Kontos ab und überprüft dann rekursiv die Mitgliedschaften dieser Gruppe. Der abgekürzte Code ist unten. Den vollständigen Quellcode mit Kommentaren finden Sie hier .
quelle
Das Folgende funktioniert gut:
Wenn Sie eine Benutzerliste haben:
quelle
Get-QADUser -SamAccountName LoginID | % {$ _. MemberOf} | Get-QADGroup | Name auswählen
quelle
Ich konnte Folgendes für einen bestimmten Benutzer nicht zum Laufen bringen:
Es gab einen Fehler, den ich nicht beheben wollte.
Ich habe jedoch mit Get-ADUser eine andere Lösung gefunden. Ich mag es ein bisschen besser, denn wenn Sie den Kontonamen nicht kennen, können Sie ihn anhand eines Platzhalters auf dem tatsächlichen Namen des Benutzers abrufen. Füllen Sie einfach PartOfUsersName aus und los geht's.
Riesige Requisiten an schmeckendeugler und 8DH, die mich zu dieser Lösung gebracht haben. +1 an euch beide.
quelle
Während es hier viele ausgezeichnete Antworten gibt, fehlt eine, nach der ich persönlich gesucht habe. Nachdem ich es herausgefunden hatte, dachte ich, ich sollte es posten, falls ich es später finden möchte, oder es schafft es tatsächlich, irgendwann jemand anderem zu helfen:
Ein zweiter Ansatz, um dies darzustellen, besteht darin, die einzelnen Spalten anzugeben, an denen Sie interessiert sind, z.
Dies gibt alle AD-Gruppen an, zu denen der Benutzername gehört - zeigt aber auch alle Standardeigenschaften jeder Gruppe an, die gut als Tabelle formatiert sind.
Der Hauptvorteil besteht darin, dass Sie auf einen Blick sehen können, welche Verteilerlisten und welche Sicherheitsgruppen sind. Sie können auf einen Blick sehen, welche universell, welche domänenlokal und welche global sind.
Warum interessiert dich dieses letzte Stück?
quelle
Ändern Sie den Wert von -SearchBase, um die Organisationseinheit wiederzugeben, aus der Sie die Benutzer auflisten möchten :)
Dadurch werden alle Benutzer in dieser Organisationseinheit aufgelistet und angezeigt, zu welchen Gruppen sie gehören.
quelle
Get-ADPrincipalGroupMembership USERLOGON | Name auswählen
quelle
quelle
Dies ist der einfachste Weg, um nur die Namen zu erhalten:
Get-ADPrincipalGroupMembership "YourUserName"
# Returns distinguishedName : CN=users,OU=test,DC=SomeWhere GroupCategory : Security GroupScope : Global name : testGroup objectClass : group objectGUID : 2130ed49-24c4-4a17-88e6-dd4477d15a4c SamAccountName : testGroup SID : S-1-5-21-2114067515-1964795913-1973001494-71628
Fügen Sie eine select-Anweisung hinzu, um die Antwort zu kürzen oder um jedem Benutzer in einer Organisationseinheit jede Gruppe zuzuweisen, deren Benutzer er ist:
foreach ($user in (get-aduser -SearchScope Subtree -SearchBase $oupath -filter * -Properties samaccountName, MemberOf | select samaccountName)){ Get-ADPrincipalGroupMembership $user.samaccountName | select name}
quelle
Um es rekursiv zu machen, können Sie verwenden:
quelle
Fast alle oben genannten Lösungen verwendeten das
ActiveDirecotry
Modul, das in den meisten Fällen möglicherweise nicht standardmäßig verfügbar ist.Ich habe die folgende Methode verwendet. Ein bisschen indirekt, hat aber meinen Zweck erfüllt.
Listen Sie alle verfügbaren Gruppen auf
Get-WmiObject -Class Win32_Group
Listen Sie dann die Gruppen auf, zu denen der Benutzer gehört
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
Der Vergleich kann dann durch Überprüfen durch die durchgeführt werden
SIDs
. Dies funktioniert für den angemeldeten Benutzer. Bitte korrigieren Sie mich, wenn ich falsch liege. Völlig neu in PowerShell, musste dies jedoch für eine Arbeitsverpflichtung erledigen.quelle
Mit Benutzereingabe und ausgefallener Ausgabeformatierung:
quelle
Setzen Sie dies hier als zukünftige Referenz. Ich bin mitten in einer E-Mail-Migration. Ich muss jedes Benutzerkonto und seine jeweilige Gruppenmitgliedschaft kennen, und ich muss auch jede Gruppe und ihre jeweiligen Mitglieder kennen.
Ich verwende den folgenden Codeblock, um eine CSV für die Gruppenmitgliedschaft jedes Benutzers auszugeben.
Der Exportprozess für die Gruppen und ihre jeweiligen Mitglieder war etwas kompliziert, aber das Folgende funktioniert. Die Ausgabedateinamen enthalten den Gruppentyp. Daher sind / sollten die E-Mail-Verteilergruppen, die ich benötige, die universellen und globalen Verteilergruppen. Ich sollte in der Lage sein, die resultierenden TXT-Dateien, die ich nicht benötige, einfach zu löschen oder zu verschieben.
quelle
Das Studium aller vorgelegten Kommentare gab mir einen Ausgangspunkt (danke dafür), ließ mich aber mit einigen ungelösten Problemen zurück. Als Ergebnis hier ist meine Antwort. Das bereitgestellte Code-Snippet bietet etwas mehr als das, was verlangt wird, bietet jedoch hilfreiche Debugging-Informationen.
quelle
Wenn Sie nicht berechtigt sind, andere Mitgliedergruppen zu konsultieren, aber die Berechtigung haben, Gruppenmitglieder zu konsultieren, können Sie Folgendes tun, um eine Karte zu erstellen, welcher Benutzer Zugriff auf welche Gruppen hat.
quelle