Get-AdUser: как проверять пользователей Active Directory с помощью PowerShell

PowerShell является неотъемлемым инструментом для IT-администраторов, и с помощью команды Get-AdUser он упрощает аудит учетных записей пользователей Active Directory. В этом руководстве мы подробно расскажем, как начать работу с популярным командлетом Active Directory.

Введение в командлет PowerShell Get-AdUser

Командлет Get-AdUser является одним из самых популярных командлетов PowerShell для работы с Active Directory. Он позволяет получить указанный объект пользователя или выполнить настраиваемый поиск для получения нескольких объектов пользователей.

Реклама

Параметр Identity используется для указания пользователя в Active Directory, которого необходимо получить. У вас есть несколько вариантов, как идентифицировать пользователя:

  • Вы можете использовать их различительное имя (DN), GUID, идентификатор безопасности (SID) или имя учетной записи в менеджере учетных записей безопасности (SAM).
  • Вы также можете установить параметр в переменную объекта пользователя, такую как $UserA, или передать объект пользователя через конвейер в параметр Identity.

Вы можете использовать параметры Filter или LDAPFilter для поиска и получения более одного пользователя. Параметр Filter использует язык выражений PowerShell (PSL) для запроса Active Directory.

Синтаксис языка выражений PowerShell предоставляет администраторам обширную поддержку преобразования типов для типов значений, принимаемых параметром Filter. Если у вас уже есть строки запросов протокола Lightweight Directory Access Protocol (LDAP), используйте вместо этого параметр LDAPFilter.

Если никакие параметры явно не установлены, Get-AdUser отображает набор свойств объекта пользователя по умолчанию. Чтобы извлечь дополнительные свойства, используйте параметр Properties. Мы коснемся некоторых параметров, которые вы можете использовать, позже в этой статье.

Реклама

Как использовать Get-AdUser и предварительные требования

Прежде чем использовать Get-AdUser и другие команды PowerShell, связанные с Active Directory, убедитесь, что модуль Active Directory установлен и загружен на вашем рабочем месте. В зависимости от версии Windows, которую вы используете, существуют различные методы, которые можно использовать для установки данной командлета.

Для краткости я расскажу о двух наиболее распространенных методах, которые вы, вероятно, пройдете в качестве администратора или ИТ-специалиста, управляющего вашей корпоративной сетью Active Directory.

Во-первых, вы можете использовать следующую команду PowerShell для установки инструмента Remote Server Administration Tools (RSAT) непосредственно из обновления Windows.

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

Второй метод заключается в использовании приложения Настройки для прямой установки инструмента RSAT. Нажмите Пуск-> Настройки -> Приложения -> Дополнительные функции -> Добавить функцию -> и поставьте отметку в опции RSAT: Службы домена Active Directory и инструменты служб каталогов Lightweight.

Реклама

Нажмите кнопку Установить.

Как найти учетную запись пользователя AD с использованием параметра -Identity

Хорошо, давайте начнем использовать командлет и покажем вам, как я могу помочь вам стать более опытным (и быстрым!) в получении необходимой информации. Я работаю в своей (Windows Server 2022 Active Directory) лабораторной среде Hyper-V и вошел в виртуальную машину (ВМ) клиента Windows 10 21H1. Я искал в меню “Пуск” “Модуль Active Directory для Windows PowerShell” и открыл его через “Запуск от имени администратора”.

Active Directory Module for Windows PowerShell

Сначала давайте найдем доменного пользователя на основе атрибута sAMAccountName

Get-ADUser breinders
Finding a user account via their sAMAccountName

Вот и все. Теперь мы можем использовать атрибут objectGUID (или GUID) для поиска пользователя. Давайте попробуем:

Get-ADUser bdcaaf45-e993-4be7-83d2-c1d280edc250
Finding an account via their objectGUID (GUID)

Ах, тот же пользовательский аккаунт. Отлично. Мы также можем искать пользователя на основе его идентификатора безопасности, или SID.

Get-ADUser S-1-5-21-3437955921-3370966048-1812589592-1107
Finding an account via their Security IDentifier (SID)

Да, немного однообразно, но смысл понятен. Вы также можете использовать Фамилию пользователя, Имя, UserPrincipalName и другие данные.

Используя фильтр Get-AdUser

В крупных средах я бы не рекомендовал вводить ‘Get-AdUser’ сам по себе, так как это начнет извлекать ВСЕ объекты пользователей в вашем присоединенном домене AD. Это не только начнет заполнять вашу консоль данными, но также может оказать заметное давление на любой контроллер домена, которым пользуется ваш рабочий стол.

Если бы мы могли отфильтровать всю базу пользователей и искать конкретных пользователей на основе некоторых свойств. Вот для этого и предназначен параметр ‘-filter’!

Параметр ‘-filter’ указывает строку запроса для извлечения объектов AD. Эта строка использует синтаксис Языка Выражений PowerShell (PEL). Синтаксис PEL обеспечивает поддержку богатого преобразования типов для типов значений, получаемых параметром Filter. Синтаксис использует представление в порядке, что означает, что оператор размещается между операндом и значением. Давайте рассмотрим несколько примеров, чтобы вы лучше поняли.

Сначала давайте обнаружим все учетные записи, которые ‘Включены’.

Get-ADUser -filter {Enabled -eq "true"} | ft
Locating all the enabled accounts

Мы используем этот прекрасный синтаксис PEL для поиска всех учетных записей с полем “Enabled”, равным True. Мы также направляем вывод, используя командлет PowerShell Format-Table для упрощения формата отображения.

Далее давайте отобразим всех пользователей с адресом электронной почты.

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding all the user accounts with an email address

Сначала обратите внимание, что мы используем параметр “-filter”, чтобы включить только учетные записи пользователей, у которых нет адреса электронной почты со значением “null”. Или проще говоря, все учетные записи с адресом электронной почты. Я знаю, иногда тяжело думать, как компьютер.

Во-вторых, мы сосредотачиваемся на трех свойствах Name, GivenName и mail (адрес электронной почты). Мы используем Format-Table и перечисляем эти свойства. Проще пареной репы!

Возможно, вам также захочется проверить свои учетные записи с точки зрения безопасности. Вы также можете использовать параметр “-filter” для поиска всех учетных записей с атрибутом “passwordneverexpires”. Это обычно не рекомендуется.

Get-AdUser where name like?

Еще одна крутая функция – использование различных параметров с -filter для поиска только определенных пользователей, соответствующих различным свойствам объекта AD пользователя. Хотя моя лабораторная среда крайне мала и имеет всего около десяти учетных записей пользователей, она все равно демонстрирует мощь и гибкость найденных учетных записей, которые вы ищете. Здесь давайте найдем всех пользователей с именем ‘Reinders’.

Get-ADUser -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Мы используем параметр «Имя» и находим все учетные записи, в названии которых где-то есть «Райндерс». Это может быть их имя, фамилия, и даже второе имя, если оно было введено. Если вы хотите найти пользователей только с фамилией Райндерс, измените поле -like на «*Райндерс». (Обратите внимание, в конце поля нет звездочки (*)).

Ограничение области поиска Get-AdUser по Организационному блоку

Если у вас есть относительно большой домен/предприятие, вы можете столкнуться с более длинным временем выполнения этих команд или излишним воздействием на производительность контроллеров домена. Давайте поговорим об ограничении области этих запросов до определенного Организационного блока (OU).

Мы можем использовать параметр «-SearchBase» и указать ОБ (или несколько ОБ) с использованием следующего синтаксиса.

Get-ADUser -SearchBase 'OU="Test Users",DC=reinders,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress
Here, we’re limiting the search scope to the ‘Test Users’ Organization Unit (OU)

Здесь мы ограничиваем нашу область поиска всеми пользователями в ОБ «Тестовые пользователи», затем выводим их имя и адрес электронной почты в формате таблицы.

Использование Get-AdUser с альтернативными учетными данными

По умолчанию команда Get-AdUser выполняется в контексте текущего пользователя. Если вы хотите выполнить команду с альтернативными учетными данными, вы можете использовать переменную, сохранить альтернативные учетные данные в этой переменной, а затем выполнить команду, используя переключатель «-Credential».

$cred = Get-Credential Get-ADUser -Credential $cred -Filter {name -like "*Reinders*"} -Properties * | ft Name,EmailAddress

Снова, легко и просто!

Работа с параметром свойств Get-AdUser

I’ve shown a few examples of the ‘-Properties’ parameter, but let’s take a step back and explain it a bit.

Параметр «-Properties» указывает свойства объекта вывода, которые необходимо извлечь с сервера. По умолчанию, если его не использовать, возвращаются и отображаются десять свойств. Это вещи вроде DistinguishedName, статуса учетной записи («Включена» или «Отключена»), имя пользователя, имя, GUID и другие более системоподобные атрибуты. Но доступно еще довольно много свойств. Используйте этот параметр, чтобы извлечь свойства, которые не включены в набор по умолчанию.

Укажите свойства для этого параметра в виде списка имен, разделенных запятыми. Чтобы отобразить все атрибуты объекта, укажите * (звездочку).

Для доступа к другим свойствам просто укажите их; используйте имя свойства. Для свойств, которые не являются свойствами по умолчанию или расширенными свойствами, необходимо указать отображаемое имя атрибута Протокола легкого доступа к каталогу (LDAP).

Давайте рассмотрим несколько примеров.

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet
Displaying all users with the date and time their password was last set/reset

Приведенный выше пример показывает всех пользователей в домене с их именем и датой/временем последней установки/сброса пароля.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Another nice feature is listing every user’s Creation Date in Active Directory

Этот пример показывает, когда учетная запись была создана в Active Directory. Завершим это запросом для отображения имени, отдела и руководителя для каждой учетной записи.

Get-ADUser -filter * -Properties Name,Department,Manager | ft Name,Department,Manager
Listing the Department and the Manager of each user, if they’re populated in Active Directory

Еще один пример и отличное использование команды Export-Csv. Если вам нужно получить список всех пользователей в домене и включить все свойства, запустите эту команду, чтобы экспортировать все в удобный файл CSV.

Get-ADUser -filter * -properties * | Export-CSV c:\temp\Users.csv

Резюме

I hope you gained some knowledge about how to use the Get-AdUser PowerShell command. This really scratches the surface, however, this is one aspect I like about the power of PowerShell: Learning about the core properties of a cmdlet and extrapolating it out to your organization.

Часто бывает удивительно легко придумать множество вариантов использования этой команды для решения проблемы, создания документации для других инженеров и помощи в общих процессах устранения неполадок. Она может пригодиться. И конечно же, использование некоторых из этих команд для создания сценария PowerShell… всегда повышает эффективность!

Не стесняйтесь задавать любые вопросы или оставлять комментарии ниже.

Связанный статья:

Source:
https://petri.com/get-aduser-how-to-audit-active-directory-users-with-powershell/