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*"}
Если мы хотим выполнить 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
Мы можем фильтровать по одному или множеству свойств. Для того что бы увидеть все свойства нужно сделать:
В области 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 и он активен:
Получение списка пользователей 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:
Выгрузим в 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 -Filter * -Properties PasswordExpired | where -Property PasswordExpired -eq $true
...
Подписывайтесь на наш Telegram канал
Теги: #powershell #ad