Как получить в Powershell список групп и их пользователей


28 июля 2019


Получение через Get-ADGroup списка групп в Powershell и пользователей

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

Get-ADGroup -Filter *

Примеры с Get-ADGroup Filter 

Если мы хотим вывести, например, только список групп безопасности, то можно сделать это так:

Get-ADGroup -Filter {GroupCategory -eq "Security"}

GroupCategory - это свойство, а eq ищет точное соответствие.  Операторы сравнения powershell разбирались тут. 

Свойств, которые мы бы хотели вывести или сравнить достаточно много и что бы увидеть их все выполните:

Get-ADGroup -Filter * -Properties * | Get-Member -MemberType Properties

Get-ADGroup Property

Можно делать сравнивание по нескольким значениям. Если я хочу получить группы созданные 20 дней назад, а так же что бы их тип был Distribution (группа распространения), мне следует сделать так:

$date = (Get-Date).AddDays(-20)
Get-ADGroup -Filter {(GroupCategory -eq "Distribution") -and (WhenCreated -gt $date)} -Properties *

Get-ADGroup filter примеры

Другие примеры рассматриваются дальше...

 

Получаем список пользователей группы в Powershell Get-ADGroup

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

Get-ADGroup -Filter {Name -like "*marketing"} -Properties Members | SELECT *

Где:

  • Properties - расширяет список стандартных свойств. В нашем случае указываем, что нам нужно получить список пользователей группы в Powershell
  • Select - в таком варианте команда выводит список всех свойств, а не только стандартный список

 У нас есть и другой способ получить список пользователей группы - это через Get-ADGroupMember. Принцип такой же как и в предыдущих вариантах:

Get-ADGroup -Filter {Name -like "*marketing"} -Properties Members | Get-ADGroupMember

Разница этих двух вариантов в том, что в первом случае мы получаем укороченную информацию о пользователях, а во втором более подробный список.

Список пользователей групп Powershell

Для получение пользователей можно сделать и так, но в этом варианте есть минус, что мы должны писать точное соответствие имени:

Get-ADGroupMember -Identity Marketing

В описании на сайте Microsoft пишут, что в нем появляется ошибка только в случае, если командлет возвращает более одной группы (в случае использования масок), но у меня так и не получилось это сделать. Вместо имени мы можем использовать SID и GUID.

 

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

Обратная ситуация, когда мы хотим узнать в каких группах наш пользователь. Для этого тоже есть несколько вариантов. Первый - это через команду получения пользователей со свойством MemberOf:

Get-ADUser -Filter {Name -eq "Test User (0001)"} -Properties MemberOF

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

Если мы хотим узнать какую либо подробную информацию о группе сделайте так:

$groups = Get-ADUser -Filter {Name -eq "Test User (0001)"} -Properties MemberOF
$groups.MemberOF | Get-ADGroup

Мы можем найти группы пользователя и так:

Get-ADGroup -Filter * -Properties Member | where -Property Member -Like "*Test User (0001)*"

Но минус этого способа в том, что он будет выполняться дольше. Возможно это будет не заметно с 1000 пользователями, а вот с 50000 может.

Группы пользователя AD Powershell

 

...

Теги: #powershell #ad


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.