Как получить все группы, в которые входит пользователь? - PullRequest
106 голосов
/ 22 февраля 2011

Командлет PowerShell Get-ADGroupMember возвращает членов определенной группы. Существует ли командлет или свойство для получения всех групп, в которые входит конкретный пользователь?

<Ч />

Я исправил свою ошибку: Get-Member должно быть Get-ADGroupMember.

Ответы [ 28 ]

234 голосов
/ 22 марта 2013

Get-ADPrincipalGroupMembership сделает это.

Get-ADPrincipalGroupMembership username | select name

name
----
Domain Users
Domain Computers
Workstation Admins
Company Users
Company Developers
AutomatedProcessingTeam
66 голосов
/ 13 мая 2014

Одна строка, модули не нужны, используется текущий зарегистрированный пользователь:

(New-Object System.DirectoryServices.DirectorySearcher("(&(objectCategory=User)(samAccountName=$($env:username)))")).FindOne().GetDirectoryEntry().memberOf

Престижность этой статьи vbs / powershell: http://technet.microsoft.com/en-us/library/ff730963.aspx

38 голосов
/ 28 мая 2014

Более краткая альтернатива опубликованной Canoas, чтобы получить членство в группе для вошедшего в систему пользователя.

В этом блоге я встречал этот метод: http://www.travisrunyard.com/2013/03/26/auto-create-outlook-mapi-user-profiles/

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof

Еще лучшая версия, которая использует регулярное выражение для удаления фрагмента LDAP и оставляет только имена групп:

([ADSISEARCHER]"samaccountname=$($env:USERNAME)").Findone().Properties.memberof -replace '^CN=([^,]+).+$','$1'

Подробнее об использовании ускорителя типа [ADSISEARCHER] можно найти в сценарииБлог парня: http://blogs.technet.com/b/heyscriptingguy/archive/2010/08/24/use-the-powershell-adsisearcher-type-accelerator-to-search-active-directory.aspx

23 голосов
/ 27 марта 2012
(GET-ADUSER –Identity USERNAME –Properties MemberOf | Select-Object MemberOf).MemberOf
22 голосов
/ 30 января 2015

Старый школьный путь от CMD:

net user mst999 /domain 
5 голосов
/ 22 февраля 2011

Получить членство в группе для пользователя:

$strUserName = "Primoz"
$strUser = get-qaduser -SamAccountName $strUserName
$strUser.memberof

См. Получить членство в группе для пользователя

Но также смотрите квест Бесплатные команды PowerShell для Active Directory .

[ Редактировать : Команда Get-ADPrincipalGroupMembership включена в Powershell начиная с версии v2 с Windows 2008 R2. Смотрите ответ kstrauss ниже.]

4 голосов
/ 22 февраля 2011

Get-Member не предназначен для получения членства в группе пользователей.Если вы хотите получить список групп, к которым принадлежит пользователь в локальной системе, вы можете сделать это следующим образом:

$query = "ASSOCIATORS OF {Win32_Account.Name='DemoUser1',Domain='DomainName'} WHERE ResultRole=GroupComponent ResultClass=Win32_Account"

Get-WMIObject -Query $query | Select Name

В приведенном выше запросе замените DemoUser1 на желаемое имя пользователя, а DomainName - наимя вашего локального компьютера или имя домена.

4 голосов
/ 06 ноября 2014

Нет необходимости в длинных скриптах, когда это простой однострочный лайнер ..

Команда QUEST

(Get-QADUser -Identity john -IncludedProperties MemberOf | Select-Object MemberOf).MemberOf

Команда MS AD

(GET-ADUSER –Identity john –Properties MemberOf | Select-Object MemberOf).MemberOf

Я считаю, что MS AD cmd быстрее, но некоторым людям нравится Quest лучше ..

Steve

4 голосов
/ 05 июня 2015

Использование:

Get-ADPrincipalGroupMembership username | select name | export-CSV username.csv

Этот конвейер выводит команду в файл CSV .

4 голосов
/ 22 февраля 2011

Get-Member - это командлет для перечисления членов .NET object.Это не имеет ничего общего с членством пользователя / группы.Вы можете получить членство в группе текущего пользователя следующим образом:

PS> [System.Security.Principal.WindowsIdentity]::GetCurrent().Groups | 
         Format-Table -auto

BinaryLength AccountDomainSid    Value
------------ ----------------    -----
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-513
          12                     S-1-1-0
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-1010
          28 S-1-5-21-...        S-1-5-21-2229937839-1383249143-3977914998-1003
          16                     S-1-5-32-545
...

Если вам нужен доступ к информации о группах произвольных пользователей, тогда @tiagoinu предложит использовать командлеты Quest AD.

...