Как через Powershell получить список пользователей AD с Get-ADUser


01 августа 2019


Get-ADUser получение списка пользователей в AD Powershell

Get-ADUser команда, которая возвращает список пользователей AD в Powershell. На самом деле командлет мало чем отличается от тех, которые мы рассматривали раннее с приставкой "Get-AD".

Для работы с командой нам понадобится Powershell Active Directory Module.

Так мы вернем всех пользователей AD:

Get-ADUser -Filter *

Если нам нужно найти по имени, сделайте так:

Get-ADUser -Filter {Name -like "*Adminis*"}

Где вместо Adminis имя вашей учетной записи. Звездочки позволяют искать вхождение где справа и слева могут быть еще символы.

Для получения сведений об одной учетной записи AD есть ключ Identity:

Get-ADUser -Identity Administrator -Properties *

Кроме этого у нас есть дополнительный ключ Properties, который выводит дополнительные свойства у объекта пользователя:

Get-ADUser -Properties * -Filter {Name -like "*0001*"}

Powershell Get-ADUser -Filter
Если мы хотим выполнить Get-ADUser в OU, то для этого есть дополнительный ключ, который может искать в организационных единицах и контейнерах. В моем случае я ищу в OU Moscow и домене domain.local:

Get-ADUser -SearchBase "OU=Moscow,DC=domain,DC=local" -Filter * -Properties *

Если вам нужно искать в контейнере - используйте CN. Примеры с множеством OU смотрите ниже.

Поиск и фильтрация списка пользователей AD в Powershell Get-ADUser -Filter

Мы можем фильтровать по одному или множеству свойств. Для того что бы увидеть все свойства нужно сделать:

Powershell Get-ADUser Properties

В области 1 выделены все имена, по которым мы можем фильтровать. В области 2 тип данных с которыми мы можем сравнивать.  Т.е. если тип данных у области 2 string (строка), то это плохая идея сравнивать с числом (int). Нужно сразу отметить, что те свойства, которые мы получаем благодаря ключу Properties мы не можем применять в Filter. 

Примеры с Get-Member мы уже рассматривали раньше.

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

Get-ADUSer -Properties * -Filter City | Where-Object -Property City -eq "Moscow"

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

Get-ADUser -Properties * -Filter {Enabled -eq $true} | Where-Object -Property BadLogonCount -gt 1

Т.к. BadLogonCount - это свойство от ключа Properties оно должно проверятся через конвейер в Where. 

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

Get-ADUser Filter пример

 

Получение списка пользователей Active Directory в Powershell Get-User из нескольких OU

В команде нет встроенных средств поиска в нескольких объектах сразу. Мы можем объявить переменную, содержащую этот список и затем передать через цикл. На моем пример используется контейнер Users и OU Moscow:

$ou = "OU=Moscow,DC=domain,DC=local","CN=Users,DC=domain,DC=local"
$ou | foreach {Get-ADUser -SearchBase $_ -Filter * }

Если бы у меня была OU Ekaterinburg в которой находилось OU Marketing написать стоило бы так:

"OU=Marketing,OU=Ekaterinburg,DC=domain,DC=local"

 

Выгрузка пользователей из AD в Excel с Powershell

Экспорт и выгрузка может быть во множество форматов, но для выгрузки в Excel есть специальный формат CSV. Для того что бы сделать выгрузку достаточно выполнить следующее:

Get-ADUser -Filter * | Export-Csv -Path C:\data.csv -NoTypeInformation

Если мы хотим выгрузить только определенные свойства, то в поле SELECT -Property нужно их перечислить:

Get-ADUser -Property -Filter * | SELECT -Property whenChanged,StreetAddress | Export-Csv -Path C:\data.csv -NoTypeInformation

Более подробно об экспорте csv через Powershell.

 

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

Нужное свойство мы можем получить через соответствующий ключ Properties. Так я получу почту у конкретного пользователя Administrator:

Powershell email пользователяВыгрузим в CSV  имена только тех пользователей у которых нет почты:

$result = Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -EQ $null
$result | SELECT -Property Name | Export-Csv -Path C:\data.csv -NoTypeInformation

 

Получение списка пользователей чей срок действия пароля истек в Powershell

Для того что бы увидеть все свойства относящиеся к паролям выполните:

Get-ADUser password properties

И затем, по этому свойству, отфильтруем пользователей:

Get-ADUser -Filter * -Properties PasswordExpired | where -Property PasswordExpired -eq $true

 

...

Теги: #powershell #ad


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