Get-ADGroupMember - Получить всех пользователей в группе AD с помощью PowerShell
Группы Active Directory позволяют легко назначать разрешения или программное обеспечение вашим пользователям. Но как получить всех участников группы? Чтобы экспортировать или обновить всех пользователей группы AD, мы можем использовать командлет Get-ADGroupMember в PowerShell.
Вы, конечно, можете также просмотреть участников группы в Active Directory, но, как вы могли заметить, это довольно неудобно. Преимуществом использования PowerShell для получения всех участников группы является то, что вы можете легко экспортировать их, например, в Excel или использовать результаты в других скриптах.
В этой статье мы рассмотрим, как вы можете использовать командлет Get-ADGroupMember в PowerShell.
Требования
Команда Get-ADGroupMember является частью модуля Active Directory PowerShell. Этот модуль устанавливается по умолчанию на контроллерах домена. Тем не менее, я рекомендую установить модуль на вашем собственном компьютере, чтобы вам не пришлось работать на контроллере домена.
Посмотрите эту статью, чтобы установить модуль Active Directory PowerShell на вашем компьютере или сервере.
Получить всех участников группы с помощью Get-ADGroupMember
Команда Get-ADGroupMember получит все объекты, которые являются членами группы. Это могут быть пользователи, компьютеры, а также другие (вложенные) группы. Чтобы просто перечислить всех членов группы, мы можем использовать следующую команду в PowerShell:
Replace SG_M365_E3 with your group name
Get-ADGroupMember -Identity SG_M365_E3 | ftЭто выведет всех членов группы SG_M365_E3 и отформатирует их в таблицу (ft).
Простого списка всех участников группы в большинстве случаев недостаточно. Вы, вероятно, хотите получить больше информации о пользователях, такой как адрес электронной почты или отображаемое имя всех пользователей.
Чтобы сделать это, мы можем просто подключить командлет Get-ADuser после этого, запросив все данные, которые нам нужны от каждого пользователя в группе:
Get-ADGroupMember -Identity SG_M365_E3 | Get-ADUser -Properties DisplayName,EmailAddress | Select Name,DisplayName,EmailAddress,SAMAccountNameВы можете выбрать любой атрибут, который вам нужен в команде Get-ADUser, но убедитесь, что вы также добавили его в выбор в конце команды.
Вложенные группы
Вложенные группы являются обычной практикой в Active Directory. Они позволяют назначать права или политики пользователям на основе их членства в группах. Рассмотрим следующий пример, где мы назначили PowerBi менеджменту по продажам и управляющему совету:
Чтобы получить фактических пользователей, которые имеют доступ к PowerBi, мы не можем просто использовать Get-ADGroupMember, потому что это вернет только две группы:
Что мы хотим, так это получить участников двух вложенных групп. Для этого мы можем использовать параметр -recursive. Таким образом, командлет Get-ADGroupMember также будет проходить через все вложенные группы в Active Directory.
Get-ADGroupMember -Identity SG_M365_PowerBi -Recursive | ftПолучить только пользователей, компьютеров или вложенные группы
Когда у вас есть группа, смешанная с пользователями, компьютерами или вложенными группами, вы можете захотеть получить только пользователей из этой группы. Или только другие вложенные группы.
Для этого мы можем отфильтровать результаты по objectClass члена группы. Это может быть:
- пользователь
- компьютер
- группа
Get only the users from a group
Get-ADGroupMember -Identity SG_PowerBi | Where-Object {$_.objectClass -eq "user"} | ft
Or get only the nested groups
Get-ADGroupMember -Identity SG_PowerBi | Where-Object {$_.objectClass -eq "group"} | ftЭкспортировать участников группы в CSV с помощью PowerShell
Чаще всего, когда я использую командлет Get-ADGroupMember, я хочу экспортировать результаты в Excel. Для этого мы можем использовать командлет Export-CSV в PowerShell. Это экспортирует все результаты вашего командлета PowerShell в файл CSV.
Совет
Вы также можете экспортировать прямо в Excel с помощью модуля PowerShell ImportExcel.
Допустим, мы хотим экспортировать всех участников группы SG_M65_E3 с их адресами электронной почты в Excel:
Get-ADGroupMember -Identity SG_M365_E3 | Get-ADUser -Properties DisplayName,EmailAddress | Select Name,DisplayName,EmailAddress,SAMAccountName | Export-CSV -Path c:\temp\M365E3-users.csv -NoTypeInformationЭто экспортирует результаты в файл CSV и сохранит его в C:\Temp. Команда -NoTypeInformation удаляет информацию заголовка из файла CSV. Если вы хотите узнать больше о экспорте в CSV, обязательно прочитайте эту статью.
Превышен предел размера для этого запроса
Когда вы работаете с большими группами, содержащими более 5000 участников, то возможно получение ошибки, Превышен лимит размера этого запроса. Причина, по которой вы получаете эту ошибку, заключается в том, что веб-службы Active Directory по умолчанию ограничены возвратом 5000 элементов.
Существует два способа решить эту проблему. Мы можем либо изменить конфигурацию веб-служб Active Directory, чтобы увеличить предел. Либо мы можем использовать командлет Get-ADGroup. Этот командлет не имеет ограничений.
Используя командлет Get-ADGroup
Командлет Get-ADGroup, вероятно, самый простой способ получить участников, если проблема возникает только время от времени. Мы можем просто получить группу и развернуть свойство участника, чтобы просмотреть всех участников группы.
Get-ADGroup "SG_M365_E3" -Properties Member | select -ExpandProperty memberЕсли вам нужна дополнительная информация о пользователе, мы можем передать командлет Get-ADUser, так же как мы делали это ранее с командлетом Get-ADGroupMember:
(Get-ADGroup "SG_M365_E3" -Properties Member).Member | Get-ADUser -Properties DisplayName,EmailAddress | Select Name,DisplayName,EmailAddress,SAMAccountNameУвеличение лимита
Если вам часто нужно извлекать большие группы, то, вероятно, будет лучше увеличить лимит. Для этого вам потребуется доступ к контроллеру домена.
- В проводнике перейдите к C:\Windows\ADWS
- Откройте Microsoft.ActiveDirectory.WebServices.exe.config с помощью Блокнота
- Добавьте код ниже, между строкой <add key=”OperationTimeout” value=”00:02:00″ /> и </appSettings>
<!--Specifies the maximum number of group members (recursive or non-recursive), group memberships, and authorization groups that can be retrieved by the Active Directory module Get-ADGroupMember, Get-ADPrincipalGroupMembership, and Get-ADAccountAuthorizationGroup cmdlets.
Set this parameter to a higher value if you anticipate these cmdlets to return more than 5000 results in your environment.-->
<add key="MaxGroupOrMemberEntries" value="50000"/>Результат файла должен быть таким:
После того как вы сохраните файл, вам нужно будет перезапустить службу веб-сервисов Active Directory. Вы можете использовать команду PowerShell ниже для этого или перезапустить службы в консоли управления службами.
Restart-Service -name ADWSЗаключение
Как вы видели, получить всех участников группы с помощью Get-ADGroupMember довольно просто. Убедитесь, что вы используете параметр -recursive, когда у вас есть вложенные группы.
Когда вы хотите экспортировать членов группы в Excel, убедитесь, что вы попробовали модуль ImportExcel. Этот модуль позволяет вам создавать отформатированные файлы Excel прямо из PowerShell.
Если у вас есть вопросы, просто оставьте комментарий ниже.





