Polecenie Get-ADGroupMember
cmdlet programu PowerShell zwraca członków określonej grupy. Czy istnieje polecenie cmdlet lub właściwość umożliwiające pobranie wszystkich grup, których członkiem jest określony użytkownik?
Naprawiłem swój błąd: Get-Member
powinien Get-ADGroupMember
.
net user /domain username
, sprawdź także inne metody w Get Groups, w których użytkownik jest członkiem. Korzystanie z PowerShellOdpowiedzi:
Get-ADPrincipalGroupMembership zrobi to.
źródło
get-aduser $username -Properties memberof | select -expand memberof
działało dobrze.import-module activedirectory
polecenie PowerShell, a to powinno działać.Pojedyncza linia, bez modułów, wykorzystuje aktualnie zalogowanego użytkownika:
Qudos do tego artykułu vbs / powershell: http://technet.microsoft.com/en-us/library/ff730963.aspx
źródło
$env:username
na$username
i ustawiłem za pomocą,$username = "testuser"
aby łatwo wykonać podstawianie zmiennych dla innych wyszukiwań użytkowników.Bardziej zwięzła alternatywa dla tej opublikowanej przez Canoas, aby uzyskać członkostwo w grupie dla aktualnie zalogowanego użytkownika.
Trafiłem na tę metodę w tym poście na blogu: http://www.travisrunyard.com/2013/03/26/auto-create-outlook-mapi-user-profiles/
Jeszcze lepsza wersja, która używa wyrażenia regularnego do usunięcia guff LDAP i pozostawia tylko nazwy grup:
Więcej szczegółów na temat używania akceleratora typu [ADSISEARCHER] można znaleźć na blogu skrypciarza: http://blogs.technet.com/b/heyscriptingguy/archive/2010/08/24/use-the-powershell-adsisearcher-type -accelerator-to-search-active-directory.aspx
źródło
| Sort-Object
aby był jeszcze bardziej czytelny.Stara szkoła z CMD:
źródło
źródło
Jeśli nie możesz zmusić Get-ADPrincipalGroupMembership do pracy, możesz spróbować zalogować się jako ten użytkownik, a następnie użyć.
źródło
$id = [Security.Principal.WindowsIdentity]("username")
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | % {$_.Translate([Security.Principal.NTAccount])}
.Uzyskaj członkostwo w grupie dla użytkownika:
Zobacz Uzyskiwanie członkostwa grupowego dla użytkownika
Ale zobacz także bezpłatne polecenia programu Quest PowerShell dla usługi Active Directory .
[ Edycja : Polecenie Get-ADPrincipalGroupMembership jest zawarte w programie Powershell od wersji 2 w systemie Windows 2008 R2. Zobacz odpowiedź kstraussa poniżej.]
źródło
Get-Member
to polecenie cmdlet do wyświetlania listy członków platformy .NETobject
. Nie ma to nic wspólnego z członkostwem użytkowników / grup. Możesz uzyskać członkostwo w grupie bieżącego użytkownika w następujący sposób:Jeśli potrzebujesz dostępu do informacji o grupach dowolnych użytkowników, lepszym sposobem jest sugestia @tiagoinu dotycząca korzystania z poleceń cmdlet Quest AD.
źródło
Najpierw zaimportuj moduł activedirectory:
Następnie wydaj polecenie:
Spowoduje to wyświetlenie członków określonej grupy.
źródło
Nie ma potrzeby tworzenia długich skryptów, gdy jest to prosta jedna linijka.
Polecenie QUEST
Polecenie MS AD
Uważam, że cmd MS AD jest szybsze, ale niektórzy ludzie lubią te z Questa bardziej ...
Steve
źródło
Get-Member nie służy do uzyskiwania członkostwa użytkownika w grupie. Jeśli chcesz uzyskać listę grup, do których należy użytkownik w systemie lokalnym, możesz to zrobić:
W powyższym zapytaniu zastąp DemoUser1 żądaną nazwą użytkownika, a DomainName nazwą twojego komputera lokalnego lub nazwą domeny.
źródło
Posługiwać się:
Powoduje to przesyłanie danych wyjściowych polecenia do pliku CSV .
źródło
Powinno to dostarczyć szczegółowych informacji o aktualnym użytkowniku. Powershell nie jest potrzebny.
whoami /groups
źródło
To tylko jedna linia:
koniec :)
źródło
select -expandproperty memberof
spowoduje, że wynik będzie bardziej czytelny / przydatny.Napisałem funkcję PowerShell o nazwie Get-ADPrincipalGroupMembershipRecursive. Akceptuje DSN użytkownika, komputera, grupy lub konta usługi. Pobiera początkową listę grup z atrybutu memberOf konta, a następnie rekurencyjnie sprawdza członkostwa tych grup. Skrócony kod znajduje się poniżej. Pełny kod źródłowy z komentarzami można znaleźć tutaj .
źródło
Poniższe działa dobrze:
Jeśli masz listę użytkowników:
źródło
Get-QADUser -SamAccountName LoginID | % {$ _. MemberOf} | Get-QADGroup | wybierz nazwę
źródło
Nie udało mi się uruchomić następujących elementów dla konkretnego użytkownika:
Wystąpił błąd, którego nie chciałem rozwiązać.
Wymyśliłem jednak inne rozwiązanie, używając Get-ADUser. Podoba mi się to trochę lepiej, ponieważ jeśli nie znasz nazwy konta, możesz ją uzyskać na podstawie symbolu wieloznacznego na rzeczywistej nazwie użytkownika. Wystarczy wpisać PartOfUsersName i gotowe .
Ogromne rekwizyty dla schmeckendeuglera i 8DH za doprowadzenie mnie do tego rozwiązania. +1 dla was obu.
źródło
Chociaż jest tu wiele doskonałych odpowiedzi, brakuje jednej, której osobiście szukałem. Kiedy już to wymyśliłem - pomyślałem, że powinienem to opublikować, na wypadek, gdyby chciał go później znaleźć, lub faktycznie w pewnym momencie uda się komuś pomóc:
Drugim sposobem przedstawienia tego jest określenie poszczególnych kolumn, które Cię interesują, np .:
Daje to wszystkie grupy AD, do których należy nazwa użytkownika - ale także przedstawia wszystkie domyślne właściwości każdej grupy w ładnym formacie tabeli.
Główną korzyścią, jaką to daje, jest to, że na pierwszy rzut oka widać, które są listami dystrybucyjnymi, a które grupami zabezpieczeń. Możesz dalej zobaczyć na pierwszy rzut oka, które są uniwersalne, które są DomainLocal, a które są globalne.
Dlaczego miałbyś się przejmować tym ostatnim kawałkiem?
źródło
Zmień wartość -SearchBase, aby odzwierciedlić jednostkę organizacyjną, z której chcesz wyświetlić użytkowników :)
Spowoduje to wyświetlenie wszystkich użytkowników w tej jednostce organizacyjnej i wyświetlenie grup, do których należą.
źródło
Get-ADPrincipalGroupMembership USERLOGON | wybierz nazwę
źródło
źródło
To najprostszy sposób na uzyskanie nazw:
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
Dodaj instrukcję select, aby przyciąć odpowiedź lub uzyskać każdego użytkownika w jednostce organizacyjnej każdej grupy, której jest użytkownikiem:
foreach ($user in (get-aduser -SearchScope Subtree -SearchBase $oupath -filter * -Properties samaccountName, MemberOf | select samaccountName)){ Get-ADPrincipalGroupMembership $user.samaccountName | select name}
źródło
Aby uzyskać rekursywność, możesz użyć:
źródło
W prawie wszystkich powyższych rozwiązaniach zastosowano
ActiveDirecotry
moduł, który w większości przypadków może nie być dostępny domyślnie.Użyłem poniższej metody. Trochę pośredni, ale spełnił moje zadanie.
Lista wszystkich dostępnych grup
Get-WmiObject -Class Win32_Group
Następnie wypisz grupy, do których należy użytkownik
[System.Security.Principal.WindowsIdentity]::GetCurrent().Groups
Porównanie można następnie wykonać, sprawdzając plik
SIDs
. Działa to dla zalogowanego użytkownika. Proszę, popraw mnie jeśli się mylę. Całkowicie nowy w PowerShell, ale musiałem to zrobić, aby zaangażować się w pracę.źródło
Z wejściem użytkownika i fantazyjnym formatowaniem wyjściowym:
źródło
Umieszczam to tutaj na przyszłość. Jestem w trakcie migracji poczty e-mail. Muszę znać każde konto użytkownika i jego przynależność do grupy, a także muszę znać każdą grupę i jej członków.
Używam poniższego bloku kodu, aby wyprowadzić plik CSV dla członkostwa w grupach każdego użytkownika.
Proces eksportu grup i ich członków był nieco zawiły, ale poniższe działa. Nazwy plików wyjściowych zawierają typ grupy. Dlatego potrzebne mi grupy dystrybucji poczty e-mail to / powinny być grupy Universal i Global Distribution. Powinienem móc po prostu usunąć lub przenieść wynikowe pliki TXT, których nie potrzebuję.
źródło
Przestudiowanie wszystkich przedstawionych komentarzy dało mi punkt wyjścia (dzięki za takie), ale pozostawiło mi kilka nierozwiązanych kwestii. W rezultacie oto moja odpowiedź. Podany fragment kodu robi nieco więcej niż to, o co jest proszone, ale zawiera przydatne informacje dotyczące debugowania.
źródło
Jeśli nie masz uprawnień do konsultowania się z innymi grupami członków, ale masz uprawnienia do konsultowania się z członkami grupy, możesz wykonać następujące czynności, aby zbudować mapę użytkowników, do których mają dostęp.
źródło