0

Выгрузка пользователей из ad в excel

01 августа 2019

Get-ADUser команда, которая возвращает список пользователей AD в Powershell. На самом деле командлет мало чем отличается от тех, которые мы рассматривали раннее с приставкой "Get-AD".

Для работы с командой нам понадобится Powershell Active Directory Module.

Так мы вернем всех пользователей AD:

Если нам нужно найти по имени, сделайте так:

Где вместо Adminis имя вашей учетной записи. Звездочки позволяют искать вхождение где справа и слева могут быть еще символы.

Для получения сведений об одной учетной записи AD есть ключ Identity:

Кроме этого у нас есть дополнительный ключ Properties, который выводит дополнительные свойства у объекта пользователя:


Если мы хотим выполнить Get-ADUser в OU, то для этого есть дополнительный ключ, который может искать в организационных единицах и контейнерах. В моем случае я ищу в OU Moscow и домене domain.local:

Если вам нужно искать в контейнере – используйте CN. Примеры с множеством OU смотрите ниже.

Навигация по посту:

Поиск и фильтрация списка пользователей AD в Powershell Get-ADUser -Filter

Мы можем фильтровать по одному или множеству свойств. Для того что бы увидеть все свойства нужно сделать:

В области 1 выделены все имена, по которым мы можем фильтровать. В области 2 тип данных с которыми мы можем сравнивать. Т.е. если тип данных у области 2 string (строка), то это плохая идея сравнивать с числом (int). Нужно сразу отметить, что те свойства, которые мы получаем благодаря ключу Properties мы не можем применять в Filter.

Примеры с Get-Member мы уже рассматривали раньше.

Для примера так мы можем получить всех пользователей, у которых указан город Moscow:

А теперь найдем всех пользователей, которые неверно вводили пароль более одного раза и в они включены:

Т.к. BadLogonCount – это свойство от ключа Properties оно должно проверятся через конвейер в Where.

Еще один пример, но теперь нужно найти пользователя имя которого содержит 0001 и он активен:

Получение списка пользователей Active Directory в Powershell Get-User из нескольких OU

В команде нет встроенных средств поиска в нескольких объектах сразу. Мы можем объявить переменную, содержащую этот список и затем передать через цикл. На моем пример используется контейнер Users и OU Moscow:

Если бы у меня была OU Ekaterinburg в которой находилось OU Marketing написать стоило бы так:

Читайте также:  Инструкция зарядного устройства электроника

Выгрузка пользователей из AD в Excel с Powershell

Экспорт и выгрузка может быть во множество форматов, но для выгрузки в Excel есть специальный формат CSV. Для того что бы сделать выгрузку достаточно выполнить следующее:

Если мы хотим выгрузить только определенные свойства, то в поле SELECT -Property нужно их перечислить:

Получение Email пользователя AD в Powershell

Нужное свойство мы можем получить через соответствующий ключ Properties. Так я получу почту у конкретного пользователя Administrator:

Выгрузим в CSV имена только тех пользователей у которых нет почты:

Получение списка пользователей чей срок действия пароля истек в Powershell

Для того что бы увидеть все свойства относящиеся к паролям выполните:

И затем, по этому свойству, отфильтруем пользователей:

Одной из стандартных процедур проведения аудита ITGC для каталога Active Directory является получение выгрузки всех пользователей домена. На основании полученных данных далее формируются процедуры тестирования, к примеру изучение списка администраторов или выявление пользователей с истекшим паролем. Наиболее эффективным для формирования такой выгрузки будет использование стандартного интерфейса PowerShell , примеры которого мы и рассмотрим в данной статье

Ниже представлен скрипт PowerShell, как один из наиболее простых и быстрых способов получить список всех пользователей домена AD в формате CSV, который без проблем открывается тем же Excel’ем.

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru" $objSearcher.Filter = "(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))" $users = $objSearcher.FindAll() # Количество учетных записей $users.Count $users | ForEach-Object < $user = $_.Properties New-Object PsObject -Property @< Должность = [string]$user.description Отдел = [string]$user.department Логин = [string]$user.userprincipalname Телефон = [string]$user.telephonenumber Комната = [string]$user.physicaldeliveryofficename ФИО = [string]$user.cn >> | Export-Csv -NoClobber -Encoding utf8 -Path С: list_domen_users.csv

Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполним команду

Get-ADUser -identity tuser -properties *

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where <$_.name –like “*Dmitry*”>| sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:tempuser-password-expires-2015.csv

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.

В этом примере мы покажем, как с помощью командлета PowerShell Get-ADUser получить информацию о времени последней смены пароля пользователя, дате истекает срока действия пароля и другие данные пользователей.

Как найти пользователя в AD и вывести его свойства с помощью Get-ADUser?

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

В 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

Import-Module "C:PSADPoShMicrosoft.ActiveDirectory.Management.dll"
Import-Module "C:PSADPoShMicrosoft.ActiveDirectory.Management.resources.dll"

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

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

По-умолчанию командлет 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 и их значения.

Попробуем изменить параметры команды 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

Получить 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:tempmail_list.csv

Get-ADUser: экспорт пользователей домена в текстовый или CSV/Excel файл

Полученный список пользователей домена с атрибутами можно выгрузить в текстовый файл:

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

Или вы можете выгрузить пользователей AD в файл CSV, который в дальнейшем будет удобно экспортировать в Excel.

Читайте также:  Зеркальный фотоаппарат nikon d70

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | select Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c: empuser-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:

Чтобы подсчитать общее количество всех аккаунтов в 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 <$_.PasswordExpired>|select name,passwordexpired

Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетной записи в строке), нужно получить телефон пользователя из AD и выгрузить информацию в текстовый csv файл (для дальнейшего формирования отчета в Exсel).

Import-Csv c:psusernsme_list.csv | ForEach <
Get-ADUser -identity $_.user -Properties Name, telephoneNumber |
Select Name, telephoneNumber |
Export-CSV c:psexport_ad_list.csv -Append -Encoding UTF8
>

Пользователи, которые не меняли свой пароль в течении последних 90 дней:

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

$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

Вывести список компьютеров домена, на которые разрешено входить пользователю (ограничение через атрибут LogonWorkstations):

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

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *