Поиск по сайту:

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, PasswordNeverExpires

Get-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.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

Все логические операторы 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.

Статьи по данной тематике