Ad explorer найти пользователя по имени
Работа с email адресами пользователей в Active Directory с помощью PowerShell
Адрес электронной почты пользователя — это один из атрибутов объекта пользователя в Active Directory. Чтобы перечислить адреса электронной почты пользователей, необходимо добавить поле EmailAddress в значение опции -Properties командлета Get-ADUser.
Чтобы составить список активных учётных записей пользователей с адресами электронной почты выполните:
Чтобы получить список пользователей Active Directory без адреса электронной почты:
Следующий пример позволяет экспортировать адресную книгу электронной почты компании из AD в файл CSV, который впоследствии можно импортировать в почтовые клиенты, такие как Outlook или Mozilla Thunderbird:
Получить 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: поиск в нескольких подразделениях с помощью SearchBase
Чтобы отображать пользователей только из определённого контейнера домена (организационного подразделения), используйте опцию -SearchBase:
Если вам нужно выбрать пользователей из нескольких подразделений одновременно, используйте следующий скрипт PowerShell:
Примеры использования Get-ADUser
Давайте покажем ещё несколько полезных примеров команд для запросов пользователей Active Directory с помощью различных фильтров. Вы можете объединить их, чтобы получить необходимый список пользовательских объектов AD:
Отобразить пользователей AD, имя которых начинается с Joe:
Вы можете использовать PowerShell для расчёта общего количества учётных записей пользователей в Active Directory:
Вывод списка пользователей и их свойств, размещённых в определённом организационном подразделении (контейнере) в данном случае это OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM:
Найти отключённые учётные записи пользователей Active Directory:
Вы можете проверить дату создания учётной записи пользователя Active Directory с помощью команды:
Вы можете получить список недавно добавленных пользователей Active Directory, созданных за последние 24 часа:
Вывести список учётных записей с просроченным паролем (вы можете настроить параметры истечения срока действия пароля в политике паролей домена):
Командлеты Get-ADUser и Add-ADGroupMember можно использовать для создания динамических групп пользователей AD (в зависимости от города, должности, отдела и прочего).
Задача: для списка учётных записей, которые хранятся в текстовом файле (по одной учётной записи в строке), вам необходимо получить название компании пользователя из AD и сохранить его в файл CSV (вы можете легко импортировать этот файл в Excel).
Пользователи, которые не меняли свои пароли в течение последних 90 дней:
Чтобы получить фотографию пользователя из Active Directory и сохранить её в файле jpg, выполните следующие команды:
Чтобы получить список групп AD, членом которых является учётная запись пользователя:
Перечислить пользователей из OU, которые являются членами определённой группы безопасности домена:
Перечислить компьютеры домена, на которых пользователю разрешён вход.
Чтобы искать компьютеры и фильтровать компьютеры по их свойствам в Active Directory, вы можете использовать другой командлет – Get-ADComputer.
11.11.2021
itpro
Active Directory, PowerShell
комментария 4
Задача поиска объектов в Active Directory (пользователей, групп или компьютеров) по имени с помощью некого шаблона, регулярного выражению или маске не так очевидна, как кажется на самом деле. Дело в том, что по-умолчанию графическая консоль ADUC (AD Users and Computers), не позволяет использовать подстановочные символы в начале или в середине поисковой фразы.
Например, вы хотите найти в Active Directory все группу, в имени которых содержится ключевое слово « SQL ». Если открыть консоль поиска (Find User, Contacts, and Groups) в ADUC и выполнить обычный поиск по ключевому слову SQL , то результаты скорее всего вас не устроят. Консоль ADUC выведет только группы и пользователей у которых указанное ключевое слово содержится в начале имени. Остальные объекты со словом sql не будут найдены. Поиск по маске *sql* также не даст результатов (подстановочные символы просто не работают).
Вы можете быстро открыть окно поиска в AD с помощью команды %SystemRoot%\SYSTEM32\rundll32.exe dsquery,OpenQueryWindow .
Использование Get-ADUser с фильтрацией по атрибутам
Используя опцию -Filter, вы можете фильтровать список учётных записей пользователей по одному или нескольким атрибутам. В качестве аргументов этого параметра можно указать значение определённых атрибутов пользователей Active Directory. Если вы используете параметр -Filter, командлет Get-ADUser будет перечислять только тех пользователей, которые соответствуют критериям фильтра.
Например, я хочу перечислить активные (Enabled) учётные записи пользователей, имя которых содержит «Dmitry» (в приведённом ниже примере используется несколько фильтров; вы можете комбинировать условия, используя стандартные логические операторы сравнения PowerShell):
Кроме того, вы можете отсортировать полученный список пользователей по определённому атрибуту пользователя (столбцу) с помощью командлета Sort-Object. Вы также можете использовать командлет Where-Object для одновременного указания нескольких критериев фильтрации.
Таким образом, вы можете составить таблицу с любыми необходимыми атрибутами пользователей Active Directory.
Всё о PowerShell в Windows и на Linux. Системное администрирование Windows
Get-ADUser — это один из базовых командлетов PowerShell, который можно использовать для получения информации о пользователях домена Active Directory и их свойствах. Вы можете использовать Get-ADUser, чтобы просмотреть значение любого атрибута объекта пользователя AD, отобразить список пользователей в домене с необходимыми атрибутами и экспортировать их в CSV, а также использовать различные критерии и фильтры для выбора пользователей домена.
Командлет Get-ADUser доступен начиная с PowerShell 2.0 и является частью специального модуля Active Directory для Windows PowerShell (представленного в Windows Server 2008 R2). Командлеты RSAT-AD-PowerShell позволяют выполнять различные операции с объектами AD.
Примечание. Раньше для получения информации об атрибутах учётных записей пользователей AD приходилось использовать различные инструменты: консоль ADUC (включая сохранённые запросы AD), сценарии vbs, dsquery и так далее. Все эти инструменты теперь легко заменить командлетом Get-ADUser.
Рассмотрим пример, в котором мы расскажем, как получить информацию о последнем изменении пароля пользователя и дате истечения срока действия пароля с помощью командлета Get-ADUser PowerShell.
Поиск групп, пользователей и компьютеров в Active Directory с помощью PowerShell
Также для поиска объектов в AD, можно воспользоваться модулем PowerShell для ActiveDirectory.
Для поиска в Active Directory определенного типа объекта можно использовать соответствующий командлет:
-
– поиск групп – поиск пользователей – поиск компьютеров
Итак, сначала нужно импортировать модуль PowerShell:
Import-Module ActiveDirectory
Для поиска групп в AD по шаблону, можно воспользоваться такой командой PowerShell:
Get-ADGroup -Filter -Properties Description,info | Select Name,samaccountname,Description,info | Sort Name
Аналогично можно выполнить поиск по имени компьютера или пользователя:
Get-ADUser -Filter
Get-ADComputer -Filter
Если вы хотите выполнить универсальный поиск по всем типам объектам AD, используйте командлет Get-ADObject:
Get-ADObject -Filter –Properties * | select sAMAccountName, ObjectClass, userPrincipalName, DisplayName, Description | FT
Как вы видите, команда вывели все типа объектов в AD (ObjectClass: computer, user,group, msDS-GroupManagedServiceAccount).
Можно использовать LDAP фильтр непосредственно в команде Get-ADObject, также добавим область поиска с помощью опции SearchBase:
Get-ADObject -LdapFilter "(&(objectCategory=person)(objectClass=user)(cn=*sql*))" -SearchBase "OU=SPB,DC=winitpro,DC=ru"
Специальный командлет Search-ADAccount можно использовать для поиска отключенных, неактивных пользователей или компьютеров.
Если вам нужно найти все сервисные аккаунты AD — Group Managed Service Account (MSA и gMSA), используйте команду:
Надеюсь, эти простые способы облегчат вам задачу поиска объектов в Active Directory.
Предыдущая статья Следующая статья
Настройка синхронизации времени по NTP с помощью групповых политик
Настройка политики паролей пользователей в Active Directory
Аудит надежности паролей пользователей в Active Directory
Защита административных учетных записей в сети Windows
Добрый день!
подскажите пжт, а как в графической консоли ADUC найти пользователей у которых поле E-mail (во вкладке General) пустое (не заполненное, с пустым значением)?
а так же при этом отсеить заблокированных пользователей со статусом — Disabled account
чтобы нашёл АКТИВНЫХ пользователей с пустым значением поля е-майл адреса
LDAP запрос:
(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!mail=*) )
Рубрики сайта
Последние статьи
02.12.2021
itpro
Active Directory, PowerShell, Windows 10, Windows Server 2019
комментариев 6
SID (Security IDentifier) – это уникальный идентификатор, который присваивается пользователям, группам, компьютерам или другим объектам безопасности при их создании в Windows или Active Directory. Windows использует SID, а не имя пользователя для контроля доступа к различным ресурсам: сетевым папкам, ключам реестра, объектам файловой системы (NTFS разрешения), принтерам и т.д. В этой статье мы покажем несколько простых способов получить SID пользователя, группы или компьютера, и обратную процедуру – получить объект по известному SID.
Как найти группы или пользователей AD в консоли ADUC
Вы можете выполнять поисковые операции в графической консоли ADUC с помощью простых запросов LDAP.
- Для этого откройте меню Find («Поиск») и выберите Custom Search («Пользовательский поиск») в раскрывающемся списке.
- Перейдите на вкладку Advanced («Дополнительно»).
- Введите name=*pass* в поле «Введите запрос LDAP».
Примечание. Это означает, что вы хотите найти всех пользователей и группы, имена которых содержат «pass». Для этого используйте подстановочный знак * с обеих сторон.
Как видите, обнаружено 3 объекта AD.
Если вам нужно найти только группы AD, используйте следующий запрос LDAP:
Get-ADUser: поиск пользователя AD и вывод атрибутов
Для использования командлета Get-ADUser не обязательно использовать учетную запись с правами администратора домена. Любой авторизованный пользователь домена AD может выполнять команды PowerShell для получения значений большинства атрибутов объектов AD (кроме защищенных, см. пример с LAPS). Если нужно выполнить команду Get-ADUser из-под другой учетной записи, используйте параметр Credential.
Чтобы вывести список всех учетных записей домена, выполните команду:
Важно. Не рекомендуется выполнять эту команду в доменах AD с большим количеством аккаунтов, т.к. это вызовет большую нагрузку на контроллер домена, предоставляющего данные.
Чтобы вывести свойства только определенного пользователя, используется параметр –Identity. В качестве Identity можно указать имя пользователя, имя входа (SAMAccountName), DN (Distinguished Name), SID или GUID.
Следующие команды вернут одинаковый результат об одном и том же пользователе:
Get-ADUser –Identity a.ivanov
Get-ADUser –Identity "CN=Andrey A. Ivanov,OU=Users,OU=SPB,OU=RU,DC=winitpro,DC=loc"
Get-ADUser –Identity "Andrey A. Ivanov"
По-умолчанию командлет Get-ADUser возвращает только 10 основных атрибутов (из более чем 120 свойств учетных записей пользователей): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус аккаунта (Enabled: True/False согласно атрибуту UserAccountControl), и т.д.
В выводе командлета отсутствует информация о времени последней смены пароля пользователя.
Get-ADUSer –Server DC01.winitpro.loc –Identity tstuser
Если нужно получить данные из другого домена, нужно указать имя сервера и учетные данные для доступа к нему:
Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполните команду:
Get-ADUser -identity tuser -Properties *
Командлет Get-ADUser с параметром Properties * вывел список всех атрибутов пользователя AD и их значения (включая пустые). Аналогичный список атрибутов пользователей доступен в графической консоли Active Directory Users and Computers ( dsa.msc ) на вкладке редактора атрибутов.
В командлете Get-ADUser можно список атрибутов пользователя, которые нужно выводить. Например, вы хотите вывести значения следующих атрибутов:
- PasswordExpired
- PasswordLastSet
- PasswordNeverExpires
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
Как найти пользователя AD и вывести список свойств с помощью Get-ADUser
Чтобы использовать командлет Get-ADUser необходимо установить Модуль Active Directory для Windows PowerShell, в каких системах он уже присутствует и как его установить если он ещё не установлен, смотрите в статье «Как установить и использовать модуль Active Directory PowerShell». На рабочих станциях данный модуль вы можете установить следующей командой:
Чтобы использовать командлет Get-ADUser, вам не нужно запускать его под учётной записью с администратором домена или с делегированными разрешениями. Любой авторизованный пользователь домена AD может запускать команды PowerShell для получения значений большинства атрибутов объекта AD (кроме конфиденциальных, например, связанных со сменой пароля). Если вам нужно запустить команду Get-ADUser из другой учётной записи, используйте параметр -Credential.
Чтобы отобразить список всех учётных записей домена, выполните эту команду:
Важно: Не рекомендуется запускать эту команду в доменах с большим количеством учётных записей, поскольку контроллер домена, предоставляющий информацию, может быть перегружен.
Чтобы выполнить запрос AD на конкретном контроллере домена, используйте опцию -Server. Чтобы вывести информацию по определённому пользователю, укажите его имя после опции -Identity:
Чтобы изменить атрибуты пользователя, используйте командлет Set-ADUser.
По умолчанию командлет Get-ADUser возвращает только 10 основных атрибутов пользователя (из более чем 120 свойств учётной записи пользователя): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус учётной записи (Enabled: True/False в соответствии с атрибутом UserAccountControl AD) и так далее. В этом случае вывод командлета не содержит информации о времени последней смены пароля пользователя.
Чтобы отобразить подробную информацию обо всех доступных пользовательских атрибутах, выполните эту команду:
Командлет Get-ADUser с опцией «-Properties *» отображает список всех пользовательских атрибутов AD и их значений.
Теперь мы перейдём к форматированию вывода Get-ADUser, чтобы отображались необходимые атрибуты пользователя. Вы можете отображать сразу несколько атрибутов пользователя:
- PasswordExpired (Срок действия пароля истёк)
- PasswordLastSet (Последний раз пароль установлен)
- PasswordNeverExpires (Пароль никогда не истекает)
- LastLogonTimestamp (Временная метка последнего входа)
Чтобы показать только выбранные атрибуты пользователя, выполните команду:
Теперь в пользовательских данных есть информация о статусе учётной записи (Истёк ли срок действия пароля: True/False), дате последней смены пароля и времени последнего входа пользователя в домен. Чтобы отобразить эту информацию в более удобном табличном виде и удалить все ненужные атрибуты, используйте Select-Object -Property или Format-Table:
Часто используемые примеры команд с Get-ADUser для получения информации о пользователях AD
Далее приведем еще несколько полезных вариантов PowerShell запросов о пользователях Active Directory с помощью различных фильтров. Вы можете комбинировать их для получения необходимого списка пользователей домена:
Вывод пользователей AD, имя которых начинается с Roman:
Чтобы подсчитать общее количество всех аккаунтов в Active Directory:
Список всех активных (не заблокированных) учетных записей в AD:
Get-ADUser -Filter | 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
Список учетных записей с истекшим сроком действия пароля (срок действия пароля настраивается в доменной политике паролей):
Get-ADUser -filter -properties name,passwordExpired | where |select name,passwordexpired
Можно использовать командлеты Get-AdUser и Add-ADGroupMember для создания динамических групп пользователей AD (в зависимости от города, должности или департамента).
Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетной записи в строке), нужно получить телефон пользователя из AD и выгрузить информацию в текстовый csv файл (для дальнейшего формирования отчета в Exсel).
Пользователи, которые не меняли свой пароль в течении последних 90 дней:
$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter
Найти неактивные учетные записи пользователей (не входили в домен более 180 дней). Для получения информации об истории входов пользователей в домен используется атрибут lastLogonTimpestamp:
$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
Вывести всех пользователей из OU, кроме членов определенной группы:
$Users = Get-ADUser -filter * -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -properties memberOf
ForEach ($User In $Users)
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
$User.Name
>
>
Экспортировать пользователей из AD со указанием имени OU в графическую таблицу Out-GridView:
Проверить, что пользователь AD существует:
Вывести список компьютеров домена, на которые разрешено входить пользователю (ограничение через атрибут LogonWorkstations):
Get-ADUser AIvanov -Properties LogonWorkstations | Format-List Name, LogonWorkstations
Предыдущая статья Следующая статья
LAPS: управление паролями локальных администраторов на компьютерах домена
Выявляем источник блокировки учетной записи пользователя в Active Directory
Настройка Google Chrome с помощью ADMX шаблонов групповых политик
Настройка параметров прокси-сервера в Windows с помощью групповых политик
Узнать SID пользователя или группы в домене Active Directory
Вы можете узнать SID своей доменной учетной записи командой:
Получить SID пользователя домена Active Directory можно с помощью WMIC. В этом случае в команде нужно указать имя домена:
Для получения SID доменного пользователя можно воспользоваться командлетом Get-ADUser, входящего в состав модуля Active Directory Module для Windows PowerShell. Получим SID для доменного пользователя jjsmith:
Get-ADUser -Identity 'jjsmith' | select SID
Вы можете получить SID группы AD с помощью командлета Get-ADGroup:
Get-ADGroup -Filter | Select SID
$objUser = New-Object System.Security.Principal.NTAccount("corp.wintpro.ru","jjsmith")
Эта же команда PowerShell в одну строку:
(new-object security.principal.ntaccount “jjsmith").translate([security.principal.securityidentifier])
Get-ADUser: экспорт пользователей AD в CSV/TXT
Полученный список пользователей домена с атрибутами можно экспортировать в текстовый файл:
Или вы можете экспортировать список пользователей AD в файл CSV (который позже будет удобно импортирован в Excel):
Всё о PowerShell в Windows и на Linux. Системное администрирование Windows
Задача поиска имени пользователя или группы в Active Directory с помощью подстановочного знака, регулярного выражения или шаблона не так очевидна, как кажется. Дело в том, что по умолчанию стандартная консоль ADUC (AD Users and Computers) не позволяет использовать подстановочные знаки в начале или в середине поисковой фразы.
Например, вам нужно найти группы AD, в именах которых есть слово «password». Обычный поиск по ключу «password» результатов не дал. Поиск с использованием «*password*» также не увенчался успехом (подстановочные знаки просто не работают).
Get-ADUser –Filter: Поиск и фильтрация списка пользователей AD
С помощью параметра –Filter вы можете фильтровать список пользователей по одному или нескольким атрибутам. Это удобно использовать для поиска пользователей в AD, чьи атрибуты соответствуют указанным критериям. В качестве аргументов этого параметра можно указать значения определённых атрибутов пользователей Active Directory. При использовании параметра –Filter командлет Get-ADUser выведет только пользователей, которые соответствуют критериям фильтра.
Например, выведем список активных (Enabled) учётных записей пользователей, чье имя содержит «Dmitry». В примере ниже используется множественный фильтр, вы можете комбинировать условия с помощью стандартных логических операторов сравнения PowerShell. В данном примере атрибуты пользователей должны удовлетворять обоим условиям фильтра (-and):
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=Moscow,DC=winitpro,DC=loc’| where | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Таким образом, можно получить список пользователей с любыми необходимыми атрибутами Active Directory.
Для поиска пользователей сразу по нескольким атрибутам (legacyExchangeDN, proxyAddresses, SAMAccountName, Surname, DisplayName, SamAccountName, physicalDeliveryOfficeName, RDN и msExchMailNickname) можно использовать функцию Ambiguous Name Resolution ( ANR ):
Get-ADUser -Filter | select Name
Совет. При выборке пользователей с помощью Get-ADUser с точки зрения скорости и производительности предпочтительнее задавать критерии с помощью атрибута Filter, а не командлет Where-Object. В этом случае фильтрации результатов выборки будет выполнятся на контроллере домена, и к вам на компьютер будет возвращаться меньший набор данных.
Вы можете использовать LDAP фильтр в запросах Get-ADUser. LDAP фильтр указывается с помощью атрибута –LdapFilter.
Get-ADUser -LDAPFilter '(&(department=it)(title=devops))'
Командлет Get-ADUser в модуле PowerShell Active Directory
Комадлет Get-ADUser входит в специальный модуль для работы с Active Directory — Active Directory Module for Windows PowerShell. Командлеты модуля RSAT-AD-PowerShell позволяют выполнять различные операции с объектами каталога AD.
Примечание. Ранее для получения информации об атрибутах учетных записей пользователей AD приходилось использовать различные инструменты: консоль ADUC (в том числе сохраненные запросы AD), vbs скрипты, утилиту dsquery и т.п. Все эти инструменты может с лёгкостью заменить командлет Get-ADUser.
В этом примере мы покажем, как с помощью командлета PowerShell Get-ADUser получить информацию о времени последней смены пароля пользователя, когда истекает срок действия пароля и другие данные пользователей.
Для использования модуля RSAT-AD-PowerShell нужно запустить консоль PowerShell с правами администратора и импортировать модуль командой:
В Windows Server 2012 и выше модуль RSAT-AD-PowerShell устанавливается по-умолчанию при развертывании на сервере роли Active Directory Domain Services (AD DS). Для установки модуля на рядовом Windows Server в домен, выполните команду:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
В десктопных версия Windows 10 и 11 для работы коммандера Get-AdUser нужно установить соответствующую версию RSAT. Установить RSAT можно через Settings -> Apps -> Optional Features -> Add a feature -> RSAT: Active Directory Domain Services and Lightweight Directory Services Tools.
Также вы можете установить модуль AD с помощью PowerShell:
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
Если на компьютере не установлен модуль RSAT-AD-PowerShell, то при запуске команды Get-ADUser появится ошибка:
Проверьте, что модуль установлен, и если нужно, импортируйте его в свою сессию PowerShell:
Также есть способ использования модуля 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 можно получить так:
Что такое SID объекта в Windows?
Как мы уже сказали, SID (security identifier) позволяет уникально идентифицировать пользовали, группу или компьютер в пределах определенной области (домена или локального компьютера). SID представляет собой строку вида:
S-1-5-21- 2927053466-1818515551-2824591131 — 1103 .
В данном примере:
- 2927053466-1818515551-2824591131 – это уникальный идентификатор домена, выдавшего SID (у всего объекта в одном домене эта часть будет одинакова)
- 1103 – относительный идентификатор безопасности объекта (RID). Начинается с 1000 и увеличивается на 1 для каждого нового объекта. Выдается контроллером домена с FSMO ролью RID Master)
SIDы объектов Active Directory хранятся в базе ntds.dit, а SIDы локальных пользователей и групп в локальной базе диспетчера учетных записей Windows (SAM, Security Account Manager в ветке реестра HKEY_LOCAL_MACHINE\SAM\SAM).
В Windows есть так называемые известные идентификаторы безопасности (Well-known SID). Это SID встроенных (BuiltIn) пользователей и групп, которые есть на любых компьютерах Windows. Например:
- S-1-5-32-544 – встроенная группу Administrators
- S-1-5-32-545 – локальные пользователи
В Windows можно использовать различные средства для преобразования SID -> Name и Username -> SID: утилиту whoami, wmic, WMI, классы PowerShell или сторонние утилиты.
Поиск объектов в Active Directory по SID
Если вы не знаете к какому типу объекта AD относится SID и какой точно командлет нужно использовать для его поиска (Get-AdUser, Get-ADComputer или Get-ADGroup), вы можете использовать универсальный метод поиска объектов в Active Directory по SID с помощью командлета Get-ADObject
$sid = ‘S-1-5-21-2470146651-3951111111-2989411117-11119501’
Get-ADObject –IncludeDeletedObjects -Filter "objectSid -eq '$sid'" | Select-Object name, objectClass
В нашем случае объект AD, который имеет данный SID, является компьютером (objectClass=computer).
Предыдущая статья Следующая статья
Get-ADUser: получение информации о пользователях Active Directory из PowerShell
LAPS: управление паролями локальных администраторов на компьютерах домена
Настройка параметров прокси-сервера в Windows с помощью групповых политик
30.11.2021
itpro
Active Directory, PowerShell, Windows Server 2019
комментариев 168
Get-ADUser позволяет получить информацию о пользователе Active Directory, его атрибутах и выполнять поиск среди пользователей домена. Это один из наиболее популярных командлетов PowerShell для получения информации из AD. С помощью командлета Get-ADUser можно получить значение любого атрибута учетной записи пользователя AD, вывести список пользователей в домене с нужными атрибутами, экспортировать отчеты по пользователям в CSV файлы, и использовать различные критерии для выборки доменных пользователей.
Как узнать имя пользователя или группы по известному SID?
Чтобы узнать имя учетной записи пользователя по SID (обратная процедура), можно воспользоваться одной из следующих команд:
wmic useraccount where sid='S-1-3-12-12452343106-3544442455-30354867-1434' get name
Для поиска имени доменного пользователя по SID используйте командлеты из модуля RSAT-AD-PowerShell :
Чтобы определить имя группы по известному SID, используйте команду:
Также можно узнать получить SID группы и пользователя с помощью встроенных классов PowerShell (без использования дополнительных модулей):
Получить SID компьютера
Если компьютер с Windows добавлен в домен Active Directory, у него будет два разных SID. Первый SID – идентификатор локального компьютера (Machine SID), а второе – уникальный идентификатор компьютера в AD.
SID компьютера в домене Active Directory можно получить с помощью команды:
Get-ADComputer srv-rds1 -properties sid|select name,sid
Или просто, обрезав последние 4 символа RID и SID любого локального пользователя:
$user=(Get-LocalUser Administrator).sid
$user -replace ".$"
Важно, чтобы у каждого компьютера в домене был уникальный локальный SID. Если вы клонируете компьютеры или виртуальные машины, или создаете их из одного шаблона, то перед тем как добавить их в домен нужно выполнить команду sysprep. Эта утилита сбрасывает локальный Machine SID. Это избавит вас от частых ошибок “Не удалось восстановить доверительные отношения между рабочей станцией и доменом”.
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
Поиск компьютеров в Active Directory
Для поиска компьютеров и серверов в Active Directory по точному вхождению нужно в поле Find выбрать Computers и указать имя компьютера для поиска.
Если нужно найти компьютеры в AD по маске, нужно использовать такой LDAP запрос в разделе Custom Search -> Advanced.
Поиск пользователей и групп в Active Directory из консоли ADUC
Вы можете найти нужные объекты в графической консоли Active Directory Users and Computers ( dsa.msc ) с помощью простых LDAP запросов.
- Для этого, откройте меню Find и в выпадающем списке типов поиска выберите Custom Search;
- Переключитесь на вкладку Advanced;
- В поле LDAP query, введите: name=*sql*
Примечание. Данный LDAP запрос говорит, что вы хотите найти все объекты AD, содержащие в имени значение sql. Для этого нужно воспользоваться символом подстановки * с обеих сторон.
Если нужно искать только объекты AD типа группа, используйте такой запрос.
Как вы видите, по данному шаблону было найдено множество объектов AD (группы, компьютеры, пользователи, сервисные gMSA аккаунты).
Вы можете использовать расширенные фильтры в консоли поиска AD. Для этого включите опцию Filter в меню View и используйте расширенные фильтры для детализации поиска.
С помощью пункта меню View -> Choose Columns вы можете добавить дополнительные атрибуты объектов AD, по которым можно фильтровать найденные объекты.
Если вы используете для поиска консоль Active Directory Administrative Center ( dsac.exe ), в ней также можно использовать шаблоны LDAP для поиска. Выберите Global Search и переключитесь в режим Convert to LDAP. Введите запрос в поле LDAP query.
Совет. В некоторых случаях для поиска объектов удобно использовать сохраненные LDAP запросы в консоли Active Directory.
Как получить SID локального пользователя?
Чтобы получить SID локальной учетной записи, можно воспользоваться утилитой wmic, которая позволяет обратится к пространству имен WMI (Windows Management Instrumentation) компьютера.
wmic useraccount where name='test_user' get sid
Команда может вернуть ошибку, если репозиторий WMI поврежден. Воспользуйтесь этой инструкцией для восстановления WMI репозитория.
Команда вернула SID указанного пользователя — S-1-5-21-1175651296-1316126944-203051354-1005 .
Чтобы вывести список SID всех локальных пользователей Windows, выполните:
wmic useraccount get name,sid.
Если нужно узнать SID текущего пользователя (под которым выполняется команда), используйте такую команду:
wmic useraccount where name='%username%' get sid
Можно обратится к WMI напрямую из PowerShell:
(Get-CimInstance -Class win32_userAccount -Filter "name='test_user' and domain='$env:computername'").SID
Get-LocalUser -Name 'test_user' | Select-Object Name, SID
По аналогии можно получить SID локальной группы:
Get-LocalGroup -Name tstGroup1 | Select-Object Name, SID
$objUser = New-Object System.Security.Principal.NTAccount("LOCAL_USER_NAME")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value
Получение пользователей из нескольких OU с помощью Get-ADUser
Чтобы вывести пользователей только из определенного контейнера домена (Organizational Unit), воспользуйтесь параметром 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
Как найти группы или пользователей Active Directory с помощью PowerShell
Также для поиска объектов AD вы можете использовать модуль PowerShell для Active Directory. В отличие от метода, описанного выше, использование PowerShell для поиска чего-либо в AD требует отдельного командлета для поиска по группам, пользователям или компьютерам (командлеты Get-ADGroup, Get-ADUser или Get-ADComputer соответственно).
Чтобы найти группу, вы можете использовать следующую команду:
Я надеюсь, что эти подсказки упростят вам поиск объектов в Active Directory.
Читайте также: