Что нужно для работы с Get-ADUser
Командлет Get-ADUser входит в модуль PowerShell ActiveDirectory. Если модуль не установлен, при выполнении команды появится ошибка:
Get-ADUser : The term 'Get-ADUser' is not recognized as the name of a cmdlet,
function, script file, or operable program.
Контроллер домена
На контроллере домена с установленной ролью Active Directory Domain Services (AD DS) необходимые инструменты управления обычно уже присутствуют.
Проверить наличие модуля можно командой:
Get-Module -ListAvailable ActiveDirectory
А загрузить его в текущую сессию:
Import-Module ActiveDirectory
Обычный Windows Server
На рядовом сервере установите средства управления Active Directory:
Install-WindowsFeature -Name RSAT-ADDS
Windows 10 и Windows 11
На клиентских версиях Windows инструменты Active Directory устанавливаются как компонент RSAT:
Add-WindowsCapability -Online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
Как получить информацию о пользователе Active Directory
Если известен SamAccountName пользователя, проще всего использовать параметр -Identity:
Get-ADUser -Identity "Amanda.Morgan"
В результате будут показаны основные свойства объекта пользователя.
Чтобы получить дополнительные атрибуты, укажите их через -Properties. Например:
Get-ADUser -Identity "Amanda.Morgan" -Properties Department,Title,Mail,Manager
Если нужен более компактный вывод:
Get-ADUser -Identity "Amanda.Morgan" -Properties Department,Title,Mail |
Select-Object Name,SamAccountName,UserPrincipalName,Department,Title,Mail
Поиск пользователя по UPN
Если известен User Principal Name, например Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript., пользователя можно найти через фильтр:
Get-ADUser -Filter "UserPrincipalName -eq Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.'"
Параметр -Filter особенно полезен, когда необходимо искать пользователей не только по логину, но и по другим атрибутам Active Directory.
Как вывести всех пользователей Active Directory
Для получения всех объектов пользователей выполните:
Get-ADUser -Filter *
По умолчанию Get-ADUser возвращает только базовый набор свойств.
Если необходимы дополнительные атрибуты, лучше явно указать их:
Get-ADUser -Filter * -Properties Department,Title,Mail |
Select-Object Name,SamAccountName,UserPrincipalName,Department,Title,Mail
Для сортировки пользователей по имени:
Get-ADUser -Filter * |
Select-Object Name,UserPrincipalName |
Sort-Object Name
Пример результата:
Name UserPrincipalName
---- -----------------
Amanda Morgan Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
John Smith Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Zoe Brown Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Как подсчитать количество пользователей Active Directory
Общее количество объектов пользователей можно получить следующим образом:
(Get-ADUser -Filter * | Measure-Object).Count
Например, результат:
250
Количество активных пользователей
(Get-ADUser -Filter "Enabled -eq 'True'" | Measure-Object).Count
Количество пользователей в определённом OU
(Get-ADUser -Filter * -SearchBase "OU=Sales,DC=exoip,DC=local" |
Measure-Object).Count
Как получить email-адреса пользователей Active Directory
Для получения пользователей и их основных адресов электронной почты запросите свойство Mail:
Get-ADUser -Filter * -Properties Mail |
Select-Object Name,Mail
Пример:
Name Mail
---- ----
Amanda Morgan Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
John Smith Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Zoe Brown Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Email пользователей определённого OU
Get-ADUser -Filter * `
-SearchBase "OU=Sales,DC=exoip,DC=local" `
-Properties Mail |
Select-Object Name,Mail
Сортировка по имени
Get-ADUser -Filter * -Properties Mail |
Select-Object Name,Mail |
Sort-Object Name
Как найти пользователей Active Directory по отделу
Атрибут Department позволяет формировать списки пользователей по подразделениям компании.
Чтобы вывести всех пользователей вместе с отделом:
Get-ADUser -Filter * -Properties Mail,Department |
Select-Object Name,Mail,Department
Пример результата:
Name Mail Department
---- ---- ----------
Amanda Morgan Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. IT Department
John Smith Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. Sales
Zoe Brown Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. Marketing
Получение пользователей конкретного отдела
Например, найдём всех сотрудников отдела Sales:
Get-ADUser -Filter "Department -eq 'Sales'" -Properties Mail,Department |
Select-Object Name,Mail,Department
Сортировка пользователей по отделам
Get-ADUser -Filter * -Properties Mail,Department |
Select-Object Name,Mail,Department |
Sort-Object Department,Name
Как узнать дату последнего входа пользователя Active Directory
Для быстрого отчёта о последних входах удобно использовать свойство LastLogonDate:
Get-ADUser -Filter * -Properties LastLogonDate |
Sort-Object LastLogonDate -Descending |
Select-Object Name,LastLogonDate
Пример:
Name LastLogonDate
---- -------------
John Smith 15.01.2025 14:32:10
Amanda Morgan 10.01.2025 08:45:23
Zoe Brown 28.12.2024 11:22:17
Пользователи, входившие за последние 90 дней
$Date = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -gt $Date} -Properties LastLogonDate |
Select-Object Name,UserPrincipalName,LastLogonDate |
Sort-Object LastLogonDate -Descending
Для поиска давно неактивных учётных записей логика будет обратной:
$Date = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -lt $Date} -Properties LastLogonDate |
Select-Object Name,UserPrincipalName,Enabled,LastLogonDate |
Sort-Object LastLogonDate
Как экспортировать пользователей Active Directory в CSV
Результаты Get-ADUser можно передать в Export-Csv и получить готовый отчёт.
Например:
Get-ADUser -Filter * -Properties Mail,Department |
Select-Object Name,SamAccountName,Mail,Department |
Export-Csv -Path "C:\temp\ADUsers.csv" -NoTypeInformation -Encoding UTF8
В результате будет создан файл:
C:\temp\ADUsers.csv
Пример его содержимого:
Name,SamAccountName,Mail,Department
Amanda Morgan,amorgan,Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.,IT
John Smith,jsmith,Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.,Sales
Zoe Brown,zbrown,Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.,Marketing
Экспорт пользователей определённого OU
Get-ADUser -Filter * `
-SearchBase "OU=Sales,DC=exoip,DC=local" `
-Properties Mail,Department |
Select-Object Name,SamAccountName,Mail,Department |
Export-Csv -Path "C:\temp\SalesUsers.csv" -NoTypeInformation -Encoding UTF8
Экспорт только активных пользователей
Get-ADUser -Filter "Enabled -eq 'True'" -Properties Mail,Department |
Select-Object Name,SamAccountName,Mail,Department |
Export-Csv -Path "C:\temp\ActiveUsers.csv" -NoTypeInformation -Encoding UTF8
Если нужен более подробный готовый скрипт экспорта, смотрите статью Экспорт пользователей AD в CSV с помощью PowerShell.
Как получить пользователей из определённого OU
Параметр -SearchBase ограничивает область поиска указанной организационной единицей.
Get-ADUser -Filter * `
-SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" |
Select-Object Name,UserPrincipalName
По умолчанию поиск выполняется также во вложенных OU.
Поиск только непосредственно в указанном OU
Если вложенные организационные единицы включать не нужно, добавьте:
-SearchScope OneLevel
Полная команда:
Get-ADUser -Filter * `
-SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" `
-SearchScope OneLevel |
Select-Object Name,UserPrincipalName
Пользователи конкретного отдела внутри OU
Get-ADUser -Filter "Department -eq 'Sales'" `
-SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" `
-Properties Mail |
Select-Object Name,UserPrincipalName,Mail
Как определить руководителя пользователя Active Directory
Руководитель хранится в атрибуте Manager. Сам атрибут содержит Distinguished Name другого объекта Active Directory.
Для одного пользователя:
$User = Get-ADUser -Identity "Amanda.Morgan" -Properties Manager
$User | Select-Object Name,@{
Name = 'Manager'
Expression = {
if ($_.Manager) {
(Get-ADUser -Identity $_.Manager).Name
}
}
}
Пример результата:
Name Manager
---- -------
Amanda Morgan John Smith
Получить руководителей всех пользователей
Get-ADUser -Filter * -Properties Manager |
Select-Object Name,@{
Name = 'Manager'
Expression = {
if ($_.Manager) {
(Get-ADUser -Identity $_.Manager -ErrorAction SilentlyContinue).Name
}
}
}
Найти всех подчинённых определённого руководителя
Сначала получим Distinguished Name руководителя:
$Manager = Get-ADUser -Identity "John.Smith"
Затем найдём пользователей, у которых он указан в атрибуте Manager:
Get-ADUser -Filter "Manager -eq '$($Manager.DistinguishedName)'" |
Select-Object Name,UserPrincipalName
Как найти активных пользователей Active Directory
Активные учётные записи имеют свойство Enabled, равное True:
Get-ADUser -Filter "Enabled -eq 'True'" |
Select-Object Name,UserPrincipalName |
Sort-Object Name
С дополнительными атрибутами:
Get-ADUser -Filter "Enabled -eq 'True'" -Properties Mail,Department |
Select-Object Name,Mail,Department |
Sort-Object Name
Как найти отключённых пользователей Active Directory
Для поиска отключённых учётных записей измените условие на False:
Get-ADUser -Filter "Enabled -eq 'False'" |
Select-Object Name,UserPrincipalName |
Sort-Object Name
Можно одновременно ограничить поиск определённым OU:
Get-ADUser -Filter "Enabled -eq 'False'" `
-SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" |
Select-Object Name,UserPrincipalName
Как найти пользователей с заполненным атрибутом
Например, необходимо найти всех пользователей, у которых указан мобильный телефон:
Get-ADUser -Filter "MobilePhone -like '*'" -Properties MobilePhone |
Select-Object Name,MobilePhone
Для поиска пользователей с заполненной должностью:
Get-ADUser -Filter "Title -like '*'" -Properties Title |
Select-Object Name,Title
Аналогичным способом можно работать и с другими атрибутами Active Directory.
Как найти пользователей с незаполненным атрибутом
Обратная задача — найти учётные записи, у которых, например, отсутствует номер мобильного телефона:
Get-ADUser -Filter "MobilePhone -notlike '*'" -Properties MobilePhone |
Select-Object Name,MobilePhone
Такой запрос удобно использовать для проверки качества заполнения Active Directory.
Например, найти пользователей без указанного отдела:
Get-ADUser -Filter "Department -notlike '*'" -Properties Department |
Select-Object Name,SamAccountName
Как найти пользователей, имя которых начинается с определённого текста
Для поиска по началу имени используется оператор -like и символ *:
Get-ADUser -Filter "Name -like 'Amanda*'" |
Select-Object Name,UserPrincipalName
Команда найдёт, например:
Name UserPrincipalName
---- -----------------
Amanda Morgan Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Amanda Taylor Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Поиск Active Directory в данном случае не зависит от регистра, поэтому Amanda, AMANDA и amanda дадут одинаковый результат.
Как найти пользователей по домену электронной почты
Например, необходимо получить пользователей, основной email которых заканчивается на @exoip.com:
Get-ADUser -Filter "Mail -like '*@exoip.com'" -Properties Mail |
Select-Object Name,Mail |
Sort-Object Name
Поиск сразу по нескольким почтовым доменам
Get-ADUser -Filter "Mail -like '*@exoip.com' -or Mail -like '*@o365info.com'" `
-Properties Mail |
Select-Object Name,Mail |
Sort-Object Name
Полезные примеры Get-ADUser
Показать пользователя и его основные атрибуты
Get-ADUser -Identity "Amanda.Morgan" `
-Properties Mail,Department,Title,Manager,LastLogonDate |
Select-Object Name,SamAccountName,UserPrincipalName,Mail,
Department,Title,Manager,Enabled,LastLogonDate
Найти пользователей без email
Get-ADUser -Filter "Mail -notlike '*'" -Properties Mail |
Select-Object Name,SamAccountName
Найти отключённых пользователей определённого отдела
Get-ADUser -Filter "Enabled -eq 'False' -and Department -eq 'Sales'" `
-Properties Department |
Select-Object Name,SamAccountName,Department
Получить пользователей и дату создания учётной записи
Get-ADUser -Filter * -Properties whenCreated |
Select-Object Name,SamAccountName,whenCreated |
Sort-Object whenCreated -Descending
Найти недавно созданные учётные записи
Например, пользователей, созданных за последние 30 дней:
$Date = (Get-Date).AddDays(-30)
Get-ADUser -Filter {whenCreated -gt $Date} -Properties whenCreated |
Select-Object Name,SamAccountName,whenCreated |
Sort-Object whenCreated -Descending
Get-ADUser: основные параметры
В повседневной работе чаще всего используются следующие параметры:
-Identity— получить конкретного пользователя;-Filter— отфильтровать пользователей по атрибутам;-Properties— запросить дополнительные свойства;-SearchBase— ограничить поиск определённым OU;-SearchScope— определить глубину поиска внутри OU;-Server— явно указать контроллер домена или каталог, к которому должен выполняться запрос.
Например, запрос к конкретному контроллеру домена:
Get-ADUser -Identity "Amanda.Morgan" -Server "DC01.exoip.local"
Часто задаваемые вопросы
Почему команда Get-ADUser не работает?
Чаще всего причина в отсутствии модуля ActiveDirectory. На Windows 10 и Windows 11 установите соответствующий компонент RSAT, а на Windows Server — средства RSAT-ADDS.
Как вывести всех пользователей Active Directory?
Используйте команду Get-ADUser -Filter *. Дополнительные атрибуты можно запросить с помощью параметра -Properties.
Как найти пользователя по логину?
Если известен SamAccountName, используйте Get-ADUser -Identity "логин".
Как получить пользователей только из определённого OU?
Используйте параметр -SearchBase и укажите Distinguished Name нужной организационной единицы. По умолчанию поиск также охватывает вложенные OU.
Как получить только активных пользователей?
Используйте фильтр Get-ADUser -Filter "Enabled -eq 'True'". Для отключённых учётных записей измените значение на False.
Можно ли точно определить последний вход пользователя через LastLogonDate?
Нет. LastLogonDate удобно использовать для административных отчётов, но значение основано на реплицируемом атрибуте lastLogonTimestamp и может обновляться с задержкой. Для точного аудита последнего входа требуется другой подход.
Как сохранить результат Get-ADUser в CSV?
Передайте результат через Select-Object в Export-Csv. Например: Get-ADUser -Filter * | Select-Object Name,SamAccountName | Export-Csv "C:\temp\users.csv" -NoTypeInformation -Encoding UTF8.
Заключение
Get-ADUser — один из самых полезных командлетов PowerShell для администратора Active Directory. Он позволяет получать данные отдельных пользователей и всего домена, искать учётные записи по атрибутам, работать с OU, находить активных и отключённых пользователей и формировать отчёты.
На практике чаще всего используются параметры -Identity, -Filter, -Properties и -SearchBase. Освоив их, большинство повседневных запросов к пользовательским объектам Active Directory можно выполнять буквально одной командой.
Если необходимо не просто просмотреть данные, а сохранить пользователей в файл, смотрите статью Экспорт пользователей AD в CSV с помощью PowerShell. Для обратной операции пригодится инструкция Как импортировать пользователей AD из CSV с помощью PowerShell.