Get-ADUser: поиск информации о пользователе Active Directory с помощью PowerShell
Командлет PowerShell Get-ADUser позволяет получить информацию о пользователе Active Directory, его атрибутах и выполнить поиск среди пользователей домена. Это один из наиболее популярных командлетов PowerShell для получения информации из AD. С помощью командлета Get-ADUser вы можете получить значение любого атрибута учетной записи пользователя AD, составить список пользователей домена с атрибутами, экспортировать пользовательские отчеты в файлы CSV и использовать различные критерии для выбора и фильтрации пользователей домена.
Командлет Get-ADUser в модуле Active Directory PowerShell
Этот
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 (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Существует также способ использовать модуль 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 (кроме конфиденциальных, см. пример в статье Решение для пароля локального администратора — LAPS). Если вам нужно запустить команду Get-ADUser под другой учетной записью, используйте параметр -Credential.
Чтобы отобразить список всех учетных записей пользователей домена, выполните следующую команду:
Get-ADUser -filter *Важно. Не рекомендуется запускать эту команду в доменах Active Directory с большим количеством учетных записей пользователей. Это может создать большую нагрузку на контроллер домена, предоставляющий информацию AD.
Используйте командлет Set-ADUser, чтобы изменить атрибуты пользователя Active Directory.
Чтобы отобразить свойства конкретного пользователя, используйте команду
-Identityпараметр. Идентификацией может быть имя пользователя, имя входа (SAMAccountName), DN (отличительное имя), SID или GUID.
Следующие команды PowerShell вернут тот же результат для одной и той же учетной записи пользователя AD:
Get-ADUser -Identity b.smith
Get-ADUser -Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=active-directory,DC=loc"
Get-ADUser -Identity "Brian Smith"
По умолчанию командлет Get-ADUser возвращает только 10 основных атрибутов пользователя (из более чем 120 свойств учетной записи пользователя): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус учетной записи (включено: True/False в соответствии с AD UserAccountControl). атрибут) и т. д. В этом случае выходные данные командлета не содержат информации о времени последней смены пароля пользователя.
Чтобы выполнить запрос AD на определенном контроллере домена, используйте параметр -Server:
Get-ADUser -Server DC01.active-directory.ru -Identity tstuserЕсли вам нужно получить пользовательские данные из другого домена AD, вам необходимо указать имя контроллера домена и учетные данные для доступа к нему:
$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcredЧтобы отобразить подробную информацию обо всех доступных атрибутах пользователя, выполните следующую команду:
Get-ADUser -identity tuser -properties *Командлет Get-ADUser с переключателем Properties * перечисляет все атрибуты пользователя AD и их значения (включая пустые). Аналогичный список атрибутов пользователя доступен в графической оснастке «Пользователи и компьютеры Active Directory» (
dsa.msc) на вкладке редактора атрибутов.
Затем перейдем к форматированию вывода Get-ADUser, чтобы отображались необходимые атрибуты пользователя. Например, вы хотите отобразить значения следующих свойств пользователя:
Срок действия пароля истек
Парольластсетет
ПарольNeverExpires
Метка времени последнего входа в систему
Запустите команду:
Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestampТеперь в данных пользователя есть информация о статусе пароля учетной записи (Истек: Истина/Ложь), дата последней смены пароля и время последнего входа пользователя в домен (
lastlogontimestampатрибут). Чтобы отобразить эту информацию в более удобном виде таблицы и удалить все ненужные атрибуты, используйте Select-Object -Property и Format-Table:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresGet-ADUser -SearchBase: получение пользователей из определенных подразделений
Чтобы отображать пользователей только из определенного контейнера домена (подразделения), используйте параметр -SearchBase:
Get-ADUser -SearchBase 'OU=London,DC=active-directory,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpiresЕсли вам нужно выбрать пользователей из нескольких подразделений одновременно, используйте следующий сценарий PowerShell:
$OUs = "OU=NY,DC=active-directory,DC=com","OU=LA,DC=active-directory,DC=com","OU=MA,DC=active-directory,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=active-directory,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.csvGet-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Все логические операторы PowerShell можно использовать для выбора значений пользовательских атрибутов (
-eq,
-ne,
-gt,
-ge,
-lt,
-le,
-like,
-notlike,
-and,
-or, и т. д.)
Кроме того, вы можете отсортировать полученный список пользователей по определенному атрибуту пользователя с помощью командлета Sort-Object. Вы также можете использовать командлет Where-Object, чтобы указать несколько критериев фильтрации одновременно.
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=active-directory,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Подсказка. При поиске пользователей Active Directory с помощью Get-ADUser с точки зрения производительности предпочтительнее указывать критерии с помощью атрибута Filter, чем использовать конвейер для командлета Where-Object. В этом случае фильтрация результатов выборки будет производиться на контроллере домена, а на ваш компьютер по сети будет передаваться меньший набор данных.
Вы можете использовать фильтр LDAP в запросах Get-ADUser. Фильтр LDAP указывается с помощью атрибута -LdapFilter.
Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'Примеры PowerShell Get-ADUser
Давайте покажем еще несколько полезных примеров команд PowerShell для запроса пользователей Active Directory с использованием различных фильтров. Вы можете объединить их, чтобы получить необходимый список пользовательских объектов AD:
Отображение пользователей AD, имя которых начинается с Joe:
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Перечислите пользователей из подразделения, которые являются членами определенной группы безопасности домена:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=active-directory,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}Перечислите пользователей из подразделения, которые являются членами определенной группы безопасности домена:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=active-directory,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}Перечислите всех пользователей из подразделения, кроме членов определенной группы:
$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=active-directory,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"}Перечислите компьютеры домена, на которые пользователю разрешен вход (ограничение входа с помощью атрибута AD LogonWorkstations).
Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstationsСовет. Командлет Get-ADComputer используется для получения свойств компьютера или поиска нескольких компьютеров в Active Directory.











