Використання Get-ADUser для отримання різної інформації про користувачів домену AD

Get-ADUser це один з основних командлетів PowerShell, який можна використовувати для отримання різної інформації про користувачів Active Directory і їх атрибутах. За допомогою командлета Get-ADUser можна отримати значення будь-якого атрибута облікового запису користувача AD, вивести список користувачів в домені з потрібними атрибутами і експортувати їх в CSV, і використовувати різні критерії для вибірки доменних користувачів.

Комадлет Get-ADUser доступний починаючи з PowerShell 2.0 і входить в спеціальний модуль для роботи з Active Directory - Active Directory Module for Windows PowerShell (представлений в Windows Server 2008 R2). Командлети модуля RSAT-AD-PowerShell дозволяють виконувати різні операції з об'єктами каталогу AD.

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

У цьому прикладі ми покажемо, як за допомогою командлета PowerShell Get-ADUser отримати інформацію про час останньої зміни пароля користувача, датою закінчується термін дії пароля та інші дані користувачів.

зміст:

  • Як знайти користувача в AD і вивести його властивості за допомогою Get-ADUser?
  • Отримання користувачів з кількох OU за допомогою Get-ADUser
  • Отримати Email адреси користувачів з AD
  • Get-ADUser: експорт користувачів домену в текстовий або CSV / Excel файл
  • Get-ADUser -Filter: Сортування і фільтрація списку користувачів AD
  • Get-ADUser: різні приклади використання

Як знайти користувача в AD і вивести його властивості за допомогою Get-ADUser?

Для використання модуля RSAT-AD-PowerShell потрібно запустити консоль PowerShell з правами адміністратора і імпортувати модуль командою:

Import-Module activedirectory

У Windows Server 2012 і вище модуль RSAT-AD-PowerShell встановлюється за замовчуванням при розгортанні на сервері ролі Active Directory Domain Services (AD DS). Для установки модуля на рядовому сервері домену потрібно виконати команду:

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

У десктопних версія Windows (наприклад, в Windows 10) для роботи коммандера Get-AdUser потрібно встановити відповідну версію RSAT і включити в Панелі Управління компонент Active Directory Module for Windows PowerShell (Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> AD DS Tools).

Ви можете встановити модуль AD з PowerShell:

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

Також є спосіб використання модуля RSAT-AD-PowerShell без його RSAT установки на комп'ютері. Досить скопіювати основні файли і імпортувати модуль в сесію PoSh:

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

Повний список всіх аргументів командлет Get-ADUser можна отримати так:

help Get-ADUser

Для використання командлет Get-ADUser не обов'язково використовувати обліковий запис з правами адміністратора домену. Будь авторизований користувач домену AD може виконувати команди PowerShell для отримання значень більшості атрибутів об'єктів AD (крім захищених, см. Приклад з LAPS). Якщо потрібно виконати команду Get-ADUser з-під іншого облікового запису, використовуйте параметр Credential.

Щоб вивести список усіх облікових записів домену, виконайте команду:

Get-ADUser -filter *

важливо. Не рекомендується виконувати цю команду в доменах AD з великою кількістю акаунтів, тому що можливо перевантаження контролера домену, який надає дані.

Щоб змінити атрибути користувача використовується командлет Set-ADUser.

За замовчуванням командлет Get-ADUser повертає тільки 10 основних атрибутів (з більш ніж 120 властивостей облікових записів користувачів): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус аккаунта (Enabled: True / False згідно атрибуту UserAccountControl), і т .буд.

У висновку командлет відсутня інформація про час останньої зміни пароля користувача.

Щоб виконати запит на конкретному контролері домену використовується параметр - Server:

Get-ADUSer -Server DC01.winitpro.loc -Identity tstuser

Щоб вивести повну інформації про всі доступні атрибутах користувача tuser, виконайте команду:

Get-ADUser -identity tuser -Properties *

Командлет Get-ADUser з параметром Properties * вивів список всіх атрибутів користувача AD і їх значення.

Спробуємо змінити параметри команди Get-ADUser, щоб вивести тільки потрібні нам атрибути користувача. Можна вивести відразу кілька атрибутів користувача:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires
  • lastlogontimestamp

Виконайте команду:

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

Тепер в інформації про користувача є дані про статус аккаунта (Expired: True / False), датою зміни пароля і часу останнього входу в домен (lastlogontimestamp). Уявімо інформацію в більш зручному табличному вигляді і приберемо всі зайві атрибути за допомогою Select-Object -Property або Format-Table:

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

Отримання користувачів з кількох OU за допомогою Get-ADUser

Щоб вивести користувачів тільки з певного контейнера домену (OU), скористайтеся параметром SearchBase:

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

Якщо вам потрібно вибрати користувачів відразу з декількох OU, використовуйте наступну конструкцію:

$ OUs = "OU = Moscow, DC = winitpro, DC = local", "OU = SPB, DC = winitpro, DC = loc"
$ OUs | foreach Get-ADUser -SearchBase $ _ -Filter * | select Name, Enabled

Отримати Email адреси користувачів з AD

Email користувача це один з атрибутів в Active Directory. Щоб вивести список email адрес користувачів, ви повинні додати поле EmailAddress в обрані поля командлет Get-ADUser.

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU = MSK, DC = winitpro, DC = loc' | 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

Список користувачів, у які немає email адреси:

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

Наступний приклад дозволяє вивантажити адресну книгу email адрес компанії у вигляді 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 \ mail_list.csv

Get-ADUser: експорт користувачів домену в текстовий або CSV / Excel файл

Отриманий список користувачів домену з атрибутами можна вивантажити в текстовий файл:

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

Або ви можете вивантажити користувачів AD в файл CSV, який в подальшому буде зручно експортувати в Excel.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | select Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c: \ temp \ user-password-expires-2019.csv -Append -Encoding UTF8

Get-ADUser -Filter: Сортування і фільтрація списку користувачів AD

За допомогою параметра -Filter ви можете фільтрувати список користувачів по одному або декільком атрибутам. В якості аргументів цього параметра можна вказати значення певних атрибутів користувачів Active Directory. При використанні параметра -Filter командлет Get-ADUser виведе тільки тих, хто, які відповідають критеріям фільтра.

Наприклад, виведемо список активних (Enabled) облікових записів користувачів, чиє ім'я містить "Dmitry"(В прикладі нижче використовується множинний фільтр, ви можете комбінувати умови за допомогою стандартних логічних операторів порівняння PowerShell):

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

Додатково за допомогою sort-object ви можете відсортувати отриманий список користувачів за певним атрибуту. Крім того, для вибірки користувачів можна використовувати командлет where. Тут також можна використовувати відразу кілька критеріїв фільтрації.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' | where $ _. name -like "* Dmitry *" -and $ _. Enabled -eq $ true | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

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

Get-ADUser: різні приклади використання

Далі наведемо ще кілька корисних варіантів запитів про користувачів Active Directory за допомогою різних фільтрів. Ви можете їх комбінувати для отримання необхідного списку користувачів домену:

Висновок користувачів AD, ім'я яких починається з Roman:

Get-ADUser -filter name -like "Roman *"

Щоб підрахувати загальну кількість всіх акаунтів в Active Directory:

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

Список всіх активних (не заблокований) облікових записів в AD:

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

Вивести дату створення облікового запису користувача в домені:

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

Вивести всіх користувачів, які були створені за останні 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 файл (для подальшого формування звіту в Exсel).

Import-Csv c: \ ps \ usernsme_list.csv | ForEach
Get-ADUser -identity $ _. User -Properties Name, telephoneNumber |
Select Name, telephoneNumber |
Export-CSV c: \ ps \ export_ad_list.csv -Append -Encoding UTF8

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

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

Щоб отримати фотографію користувача з Active Directory і зберегти її в jpg файл:

$ User = Get-ADUser winadmin -Properties thumbnailPhoto
$ User.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte

Список груп, в яких складається обліковий запис користувача

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

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

Get-ADUser -SearchBase 'OU = Moscow, DC = winitpro, DC = loc' -Filter * -properties memberof | Where-Object ($ _. Memberof -like "* WKS admins *")

Вивести список комп'ютерів домену, на які дозволено входити користувачеві (обмеження через атрибут LogonWorkstations):

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

Порада. Для отримання даних про комп'ютери Active Directory використовується командлет Get-ADComputer.