
The Get-ADUser Команда PowerShell позволяет получать информацию о пользователе Active Directory, его атрибутах и осуществлять поиск среди пользователей домена. Это одна из самых популярных команд PowerShell для получения информации из AD. С помощью команды Get-ADUser можно получить значение любого атрибута учетной записи пользователя AD, составить список пользователей домена с атрибутами, экспортировать отчеты о пользователях в файлы CSV, а также использовать различные критерии для отбора и фильтрации пользователей домена.
- Команда Get-ADUser в модуле Active Directory PowerShell
- Как найти пользователя AD и перечислить его свойства с помощью Get-ADUser
- Get-ADUser -SearchBase: Получение пользователей из определенных OU
- Как получить адрес электронной почты пользователя из AD с помощью PowerShell
- Get-ADUser: экспорт пользователей Active Directory в CSV с помощью PowerShell
- Примеры фильтра Get-ADUser
- Примеры PowerShell Get-ADUser
Команда Get-ADUser в модуле Active Directory PowerShell
The Get-ADUser
Команда включена в специальный модуль для взаимодействия с Active Directory — Модуль Active Directory для Windows PowerShell. Команды модуля RSAT-AD-PowerShell позволяют выполнять различные операции над объектами AD.
В этом примере мы покажем, как использовать команду 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
Чтобы использовать команду Get-ADUser на настольных компьютерах Windows 10/11, необходимо установить соответствующую версию RSAT. Вы можете включить RSAT через Настройки -> Приложения -> Дополнительные функции -> Добавить функцию -> RSAT: Доменные службы Active Directory и средства облегченных служб каталогов.
Вы можете установить модуль 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
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 -filter *
Чтобы отобразить свойства конкретного пользователя, используйте команду –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 возвращает только 10 основных атрибутов пользователя (из более чем 120 свойств учетной записи пользователя): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус учетной записи (Enabled: True/False в соответствии с AD-атрибутом UserAccountControl) и т.д. В данном случае вывод команды не содержит информации о времени последней смены пароля пользователя.
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 с параметром Свойства * переключатель перечисляет все атрибуты пользователя AD и их значения (включая пустые). Аналогичный список атрибутов пользователя доступен в графической оснастке Active Directory Users and Computers (dsa.msc
) на вкладке «Редактор атрибутов».
Затем перейдем к форматированию вывода Get-ADUser так, чтобы отображались необходимые атрибуты пользователя. Например, вы хотите отобразить значения следующих свойств пользователя:
- PasswordExpired
- PasswordLastSet
- PasswordNeverExpires
- LastLogonTimestamp
Выполните команду:
Get-ADUser tuser -properties 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 -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 -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
Примеры фильтра Get-ADUser
Использование -Фильтр Переключатель позволяет отфильтровать список учетных записей пользователей по одному или нескольким атрибутам. Это удобно для поиска пользователей AD, чьи атрибуты соответствуют заданным критериям. Значения определенных атрибутов пользователей Active Directory можно указать в качестве аргументов этого параметра. При использовании параметра –Filter
параметр, команда Get-ADUser отобразит только тех пользователей, которые соответствуют критериям фильтра.
Например, я хочу перечислить активные (включенные) учетные записи пользователей, имя которых содержит «Дмитрий«. В приведенном ниже примере используется несколько фильтров; вы можете комбинировать условия с помощью логических операторов сравнения PowerShell. В этом примере атрибуты пользователя должны удовлетворять обоим условиям фильтра (-и):
Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled
Все логические операторы 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
Таким образом, вы можете получить список пользователей с любыми необходимыми атрибутами Active Directory.
Для поиска пользователей сразу по нескольким атрибутам (legacyExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN и msExchMailNickname) можно воспользоваться функцией разрешения неоднозначных имен (ANR
):
Get-ADUser -Filter {anr -eq 'John'} | select Name
В запросах 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
Задача: для списка учетных записей пользователей, которые хранятся в текстовом файле (по одной учетной записи в строке), необходимо получить имя компании пользователя из 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
Проверьте, существует ли учетная запись пользователя 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