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"
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 -filter *
За замовчуванням командлет 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
Завдання: для списку облікових записів, які зберігаються в текстовому файлі (по одній облікового запису в рядку), потрібно отримати телефон користувача з 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