Get-ADUser: поиск информации о пользователях Active Directory с помощью PowerShell

The Get-ADUser Команда PowerShell позволяет получать информацию о пользователе Active Directory, его атрибутах и осуществлять поиск среди пользователей домена. Это одна из самых популярных команд PowerShell для получения информации из AD. С помощью команды Get-ADUser можно получить значение любого атрибута учетной записи пользователя AD, составить список пользователей домена с атрибутами, экспортировать отчеты о пользователях в файлы CSV, а также использовать различные критерии для отбора и фильтрации пользователей домена.

Команда Get-ADUser в модуле Active Directory PowerShell

The Get-ADUser Команда включена в специальный модуль для взаимодействия с Active Directory — Модуль Active Directory для Windows PowerShell. Команды модуля RSAT-AD-PowerShell позволяют выполнять различные операции над объектами AD.

Примечание. Раньше для получения информации об атрибутах учетных записей пользователей AD приходилось использовать различные инструменты: консоль ADUC (включая сохраненные запросы AD), VBS-скрипты, dsquery и т. д. Все эти инструменты можно легко заменить командой Get-ADUser.

В этом примере мы покажем, как использовать команду Get-ADUser PowerShell для получения информации о том, когда в последний раз менялся пароль пользователя, когда истекает срок действия пароля, а также о свойствах других пользователей.

Чтобы использовать модуль RSAT-AD-PowerShell, необходимо запустить приподнятую консоль PowerShell и импортировать модуль с помощью команды:

Import-Module ActiveDirectory

Модуль RSAT-AD-PowerShell устанавливается по умолчанию на Windows Server 2012 (и более новых версиях) при развертывании роли Active Directory Domain Services (AD DS). Чтобы установить модуль на хост Windows Server, входящий в домен, выполните команду:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature

установить RSAT-AD-PowerShell на Windows Server

Чтобы использовать команду Get-ADUser на настольных компьютерах Windows 10/11, необходимо установить соответствующую версию RSAT. Вы можете включить RSAT через Настройки -> Приложения -> Дополнительные функции -> Добавить функцию -> RSAT: Доменные службы Active Directory и средства облегченных служб каталогов.

Установка модуля RSAT Active Directory PowerShell на Windows 10 и 11

Вы можете установить модуль RSAT AD на Windows 10 и 11 с помощью PowerShell:

Add-WindowsCapability –online –Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"

Если модуль RSAT-AD-PowerShell не установлен на компьютере, то при запуске команды Get-ADUser будет выдана ошибка:

Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Проверьте, установлен ли модуль, и при необходимости импортируйте его в сеанс PowerShell:

Import-Module ActiveDirectory

Термин get-aduser не распознается как имя команды, функции, файла сценария

Существует также способ использования модуля AD-PowerShell без установки RSAT на компьютер. Достаточно скопировать основные файлы модуля и импортировать его в сессию PowerShell:

Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"

Полный список всех аргументов команды Get-ADUser можно получить следующим образом:

help Get-ADUser

Как найти пользователя AD и перечислить его свойства с помощью Get-ADUser

Чтобы использовать команду Get-ADUser, не обязательно запускать ее под учетной записью администратора домена или с делегированными правами. Любой авторизованный пользователь домена AD может запускать команды PowerShell для получения значений большинства атрибутов объектов AD (кроме конфиденциальных, см. пример в статье Local Administrator Password Solution — LAPS). Если вам нужно запустить команду Get-ADUser под другой учетной записью, используйте параметр —Учетная запись параметр.

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

Get-ADUser -filter *

Важно. Не рекомендуется запускать эту команду в доменах Active Directory с большим количеством учетных записей пользователей. Это может привести к большой нагрузке на контроллер домена, предоставляющий информацию о AD.

Get-ADUser -filter * - гель всех пользователей в домене

Используйте Set-ADUser Команда для изменения атрибутов пользователя Active Directory.

Чтобы отобразить свойства конкретного пользователя, используйте команду –Identity параметр. Идентификатором может быть имя пользователя, логин (SAMAccountName), DN (Distinguished Name), SID или GUID.

Следующие команды PowerShell вернут тот же результат для одной и той же учетной записи пользователя AD:

Get-ADUser –Identity b.smith
Get-ADUser –Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=woshub,DC=loc"
Get-ADUser –Identity "Brian Smith"

get-aduser by identity

По умолчанию команда Get-ADUser возвращает только 10 основных атрибутов пользователя (из более чем 120 свойств учетной записи пользователя): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус учетной записи (Enabled: True/False в соответствии с AD-атрибутом UserAccountControl) и т.д. В данном случае вывод команды не содержит информации о времени последней смены пароля пользователя.

Чтобы выполнить запрос AD на определенном контроллере домена, используйте команду -Server вариант:

Get-ADUser –Server DC01.woshub.com –Identity tstuser

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

$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcred

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

Get-ADUser -identity tuser -properties *

get-aduser список всех свойств объекта пользователя

Команда Get-ADUser с параметром Свойства * переключатель перечисляет все атрибуты пользователя AD и их значения (включая пустые). Аналогичный список атрибутов пользователя доступен в графической оснастке Active Directory Users and Computers (dsa.msc) на вкладке «Редактор атрибутов».

Затем перейдем к форматированию вывода Get-ADUser так, чтобы отображались необходимые атрибуты пользователя. Например, вы хотите отобразить значения следующих свойств пользователя:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires
  • LastLogonTimestamp

Выполните команду:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

get-aduser - свойства PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Теперь в данных пользователя есть информация о статусе пароля учетной записи (Expired: True/False), дате последнего изменения пароля и времени последнего входа пользователя в домен (lastlogontimestamp атрибут). Чтобы отобразить эту информацию в более удобном табличном виде и удалить все ненужные атрибуты, воспользуйтесь функцией Select-Object -Property и Формат-таблица:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser Получение информации о пароле для всех пользователей с помощью format-table

Get-ADUser -SearchBase: Получение пользователей из определенных OU

Чтобы отобразить пользователей только из определенного контейнера домена (организационной единицы), используйте параметр —SearchBase параметр:

Get-ADUser -SearchBase 'OU=London,DC=woshub,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Если вам нужно выбрать пользователей сразу из нескольких OU, воспользуйтесь следующим сценарием PowerShell:

$OUs = "OU=NY,DC=woshub,DC=com","OU=LA,DC=woshub,DC=com","OU=MA,DC=woshub,DC=com"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}

Как получить адрес электронной почты пользователя из AD с помощью PowerShell

Адрес электронной почты пользователя является одним из атрибутов объекта пользователя в Active Directory. Чтобы получить список адресов электронной почты пользователей, необходимо добавить параметр EmailAddress поле в свойствах команды Get-ADUser.

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=woshub,DC=com'| select-object Name, EmailAddress

Get-ADUser EmailAddress

Список включенных учетных записей пользователей с адресами электронной почты:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Чтобы получить список пользователей Active Directory без адреса электронной почты:

Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null

Следующий пример позволяет экспортировать список адресов электронной почты компании из AD в файл CSV. Позже этот список адресов CSV можно импортировать в настольные почтовые клиенты, такие как Outlook или Mozilla Thunderbird:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\adress_list.csv

Get-ADUser: экспорт пользователей Active Directory в CSV с помощью PowerShell

Полученный список пользователей домена с атрибутами можно экспортировать в текстовый файл:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Или вы можете экспортировать список пользователей AD в CSV-файл:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like "*Dmitry*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8

Список пользователей AD можно экспортировать непосредственно в файл Excel с помощью PowerShell.

Примеры фильтра Get-ADUser

Использование -Фильтр Переключатель позволяет отфильтровать список учетных записей пользователей по одному или нескольким атрибутам. Это удобно для поиска пользователей AD, чьи атрибуты соответствуют заданным критериям. Значения определенных атрибутов пользователей Active Directory можно указать в качестве аргументов этого параметра. При использовании параметра –Filter параметр, команда Get-ADUser отобразит только тех пользователей, которые соответствуют критериям фильтра.

Например, я хочу перечислить активные (включенные) учетные записи пользователей, имя которых содержит «Дмитрий«. В приведенном ниже примере используется несколько фильтров; вы можете комбинировать условия с помощью логических операторов сравнения PowerShell. В этом примере атрибуты пользователя должны удовлетворять обоим условиям фильтра ():

Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled

Get-AdUser с фильтром

Все логические операторы PowerShell можно использовать для выбора значений атрибутов пользователя (-eq, -ne, -gt, -ge, -lt, -le, -like, -notlike, -and, -or, и т.д.)

Кроме того, вы можете отсортировать полученный список пользователей по определенному атрибуту пользователя с помощью функции Sort-Object команда Sort-Object. Также можно использовать команду Where-Object Команда, позволяющая задать сразу несколько критериев фильтрации.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=woshub,DC=com'| where {$_.name –like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser - фильтрация с помощью Where-Object и Sort-Object

Таким образом, вы можете получить список пользователей с любыми необходимыми атрибутами Active Directory.

Для поиска пользователей сразу по нескольким атрибутам (legacyExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN и msExchMailNickname) можно воспользоваться функцией разрешения неоднозначных имен (ANR):

Get-ADUser -Filter {anr -eq 'John'} | select Name

Подсказка. При поиске пользователей Active Directory с помощью Get-ADUser, с точки зрения производительности, указание критериев с помощью параметра Фильтр атрибут предпочтительнее, чем использование конвейера к Где-объект команда. В этом случае фильтрация результатов выбора будет выполняться на контроллере домена, а на ваш компьютер по сети будет передан меньший набор данных.

В запросах Get-ADUser можно использовать LDAP-фильтр. LDAP-фильтр задается с помощью параметра -LdapFilter атрибут.

Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'

Примеры PowerShell Get-ADUser

Покажем еще несколько полезных примеров команд PowerShell для запроса пользователей Active Directory с различными фильтрами. Вы можете комбинировать их, чтобы получить необходимый список объектов пользователей AD:

Отобразить пользователей AD, чье имя начинается с Джо:

Get-ADUser -filter {name -like "Joe*"}

С помощью PowerShell можно подсчитать общее количество учетных записей пользователей в Active Directory:

Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object

Найдите отключенные учетные записи пользователей Active Directory:

Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Проверить дату создания учетной записи пользователя Active Directory можно с помощью команды:

get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated

Вы можете получить список новых добавленных пользователей Active Directory, созданных за последние 24 часа:


$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}

Список учетных записей с истекшим паролем (параметры истечения срока действия пароля можно настроить в политике паролей домена):

Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpired

Вы можете использовать команды Get-ADUser и Add-ADGroupMember для создания динамических групп пользователей AD (в зависимости от города, должности, отдела и т.д.).

Задача: для списка учетных записей пользователей, которые хранятся в текстовом файле (по одной учетной записи в строке), необходимо получить имя компании пользователя из AD и сохранить его в CSV-файл (этот CSV-файл можно легко импортировать в Excel).

Import-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, Company |
Select Name, Company |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

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

$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}

Поиск неактивных учетных записей пользователей (не входивших в домен более 180 дней). Атрибут lastLogonTimestamp используется для получения истории входа пользователя в домен:

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} |  Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize

Чтобы получить фотографию пользователя из Active Directory и сохранить ее в файл jpg, выполните следующие команды:

$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte

Чтобы получить список групп AD, членом которых является учетная запись пользователя:

Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberof

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

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=woshub,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

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

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=woshub,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

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

$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=woshub,DC=com’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}

Экспорт списка пользователей AD с именем организационной единицы в таблицу Out-GridView:

get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView

powershell: экспорт списка пользователей active directory в таблицу out-gridview

Проверьте, существует ли учетная запись пользователя AD:
$SamAccountName="jbrown"
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{  Write-Host "User $SamAccountName doesn’t exist"}

Перечислите компьютеры домена, на которых пользователю разрешено входить в систему (ограничение входа через атрибут LogonWorkstations AD).

Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstations

Совет. Команда Get-ADComputer используется для получения свойств компьютера или поиска нескольких компьютеров в Active Directory.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *