DOC / 1462 SysAdminHub.ru

Как использовать Get-ADUser в PowerShell

Как использовать Get-ADUser в PowerShell

Что нужно для работы с 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.

ORIGINAL / ATTRIBUTION

Источник материала

Материал взят с https://sysadminhub.ru/. Оригинальная статья и авторство указаны по ссылке ниже.

Оригинал статьи на SysAdminHub.ru ↗

https://sysadminhub.ru/produkty-microsoft/windows-server/get-aduser

Материал проверен 10.10.2026. При изменении программного обеспечения сверяйтесь с актуальной документацией.
← Вернуться в базу знаний