Windows powershell get aduser

Get-ADUser это наиболее часто используемый администраторами PowerShell командлет для получения информации о пользователях Active Directory, значениях их атрибутов, таких как имена пользователей, email адреса, активность, членство в группах, контактной информации, должностях, организациях и т.д. С помощью командлета Get-ADUser можно вывести информацию о пользователях домена, выполнить запросы (фильтры) для выборки пользователей по критериям, и экспортировать отчеты о пользователях в CSV/TXT файлы для дальнейшего анализа.

Содержание:

  • Командлет Get-ADUser в модуле PowerShell Active Directory
  • Get-ADUser: поиск пользователя AD и вывод атрибутов
  • Фильтрация пользователей AD с помощью Get-ADUser -Filter
  • Экспорт списка пользователей AD в текстовый или CSV/Excel файл
  • Get-ADUser: часто используемые примеры команд

Ранее для получения информации об учетных записях пользователей AD и их параметрах использовались графическая консоль ADUC (в том числе сохраненные запросы AD), vbs скрипты, утилита dsquery и т.п. Все эти инструменты может с лёгкостью заменить командлет

Get-ADUser

.

Командлет Get-ADUser в модуле PowerShell Active Directory

Чтобы использовать комадлет Get-ADUser для получения информации из AD, на компьютере должен быть установлен модуль Active Directory для PowerShell.

Этот модуль установлен по-умолчанию на контроллерах домена AD (ставится вместе с ролью Active Directory Domain Services, AD DS). Также модуль AD можно установить вручную на любом компьютере (входит в состав набора компонентов RSAT):

  • В Windows Server 2012R2 и выше:
    Install-WindowsFeature -Name RSAT-AD-PowerShell –IncludeAllSubFeature

    Установка модуля RSAT-AD-PowerShell

  • В Windows 11 и 10:
    Get-WindowsCapability -Name RSAT.ActiveDirectory* -Online | Add-WindowsCapability -Online

Проверьте, что модуль установлен, и если нужно, импортируйте его в свою сессию PowerShell:

Get-Module ActiveDirectory
Import-Module ActiveDirectory

Если модуль RSAT-AD-PowerShell отсутствует, при запуске команд Get-ADUser появится ошибка:

get-aduser : The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

команда get-aduser не найдена

Вывести синтаксис и список всех доступных аргументов командлета Get-ADUser:

help Get-ADUser

Get-ADUser помощь по командлету

Get-ADUser: поиск пользователя AD и вывод атрибутов

Рассмотрим, как с помощью командлета Get-ADUser получить различную информацию о пользователях домена. Командлет может вывести данные как об одном, так и о нескольких пользователях AD.

Использовать командлета Get-ADUser для получения информации из AD можно под любым пользователем домена (не обязательно иметь права администратора или делегированные разрешения). Любой пользователь может просматривать значения. атрибуты объектов AD, кроме защищенных (см. пример с LAPS).

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

Get-ADUser -filter *

Get-ADUser -filter вывести всех пользователей домена

Важно. Не рекомендуется выполнять эту команду в доменах AD с большим количеством аккаунтов, т.к. это вызовет большую нагрузку на контроллер домена, предоставляющего данные.

Чтобы вывести свойства только определенного пользователя, используется параметр -Identity. В качестве аргумента нужно указать имя пользователя, SAMAccountName, 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 поиск пользователя по identity

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

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

Get-ADUser -identity tuser -Properties *

Get-ADUser -Properties * - вывести список всех атрибутов и значения доменного пользователя

Можно указать выбрать атрибуты, которые нужно выводить. Например, я хочу вывести информацию о том, просрочен ли пароль пользователя (Expired: True/False), время последней смены пароля, когда истекает срок действия пароля и время последнего входа в домен. Эти данные хранятся в следующих атрибутах учетной записи пользователя:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires
  • Lastlogontimestamp

Выполните команду:

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

Get-ADUser вывести дату смены пароля (PasswordLastSet) и время последнего входа в домен (lastlogontimestamp)

Чтобы оставить в выводе только указанные атрибуты, нужно отфильтровать их с помощью Select-Object -Property или Format-Table. Следующая команда выведет табличном виде информацию о статусе пароля для всех пользователей AD:

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

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

Чтобы получить данные из AD через конкретный контроллер домена, используется параметр Server:

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

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

$cred = Get-Credential
Get-ADUSer tstuser -Server DC01.newdomain.ru -Credential $Cred

Фильтрация пользователей AD с помощью Get-ADUser -Filter

С помощью параметра -Filter можно отфильтровать список пользователей по одному или нескольким атрибутам. Это удобно использовать для поиска пользователей в AD, у которых значения атрибутов соответствуют вашему запросу.

Например, выведем список активных (Enabled) учётных записей пользователей, чье имя содержит «Dmitry». Для этого используется фильтр с несколькими условиями. В данном примере атрибуты пользователей должны удовлетворять обоим условиям фильтра (-and):

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

Filter командлета Get-AdUser, множественная фильтрация

Можно использовать все стандартные логические операторы 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 {$_.name –like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser фильтр с помощью where-object

Совет. При выборке пользователей с помощью Get-ADUser с точки зрения скорости и производительности предпочтительнее задавать критерии с помощью атрибута Filter, а не командлет Where-Object. В этом случае фильтрации результатов выборки будет выполнятся на контроллере домена, и к вам на компьютер будет возвращаться меньший набор данных.

В запросах Get-ADUser можно использовать LDAP фильтры. Они указываются помощью атрибута -LdapFilter.

Get-ADUser -LDAPFilter '(&(department=it)(title=devops))'

Экспорт списка пользователей AD в текстовый или CSV/Excel файл

Cписок пользователей домена с их атрибутами, полученный с помощью команды Geet-ADUser можно выгрузить в текстовый файл:

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

Или с помощью командлета Export-csv можно выгрузить пользователей в 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

Выгрузить адресную книгу 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: часто используемые примеры команд

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

Вывести список email адресов пользователей в домене:

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=MSK,DC=winitpro,DC=loc'| select-object Name, EmailAddress

Get-ADUser список email адресов

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

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

Вывести активных пользователей, у которых в свойствах не задан отдел (department):

Get-AdUser -Filter "Enabled -eq 'True'" -Properties * |where Department -eq $null|select name,enabled,Department

Чтобы вывести пользователей только из определенного контейнера домена (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 {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}

Вывод пользователей 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

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

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

Найти неактивные учетные записи пользователей (не входили в домен более 180 дней). Для получения информации об истории входов пользователей в домен используется атрибут lastLogonTimpestamp:

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} |  Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize

Чтобы получить фотографию пользователя из 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*")}

Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетной записи в строке), нужно получить телефон пользователя из 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
}

Вывести всех пользователей из 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:

get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView

get-aduser экспорт списка пользоватетелей Active Directoryв таблицу out-gridview

Проверить, что пользователь AD существует:

$SamAccountName='a.ivanov2'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{  Write-Host "Пользователь $SamAccountName не существует"}

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

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

Совет. Для получения данных о компьютерах Active Directory используется командлет Get-ADComputer.

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

Содержание:

  • Перед началом работы: что нужно знать
  • Как получить информацию о пользователе Active Directory
  • Как вывести всех пользователей Active Directory
  • Как подсчитать количество пользователей Active Directory
  • Получение email-адресов пользователей Active Directory
  • Как найти пользователей Active Directory по отделу
  • Как узнать дату последнего входа пользователей Active Directory
  • Экспорт пользователей Active Directory в CSV-файл
  • Как получить пользователей из определенного OU (организационного подразделения)
  • Как определить менеджера (руководителя) пользователей Active Directory
  • Как найти активных пользователей Active Directory
  • Как найти отключенных пользователей Active Directory
  • Поиск пользователей с заданным значением свойства Active Directory
  • Поиск пользователей без заданного значения свойства Active Directory
  • Как найти пользователей Active Directory, чье имя начинается с определенного текста
  • Как найти пользователей Active Directory, чей email заканчивается определенным текстом
  • Примеры использования Get-ADUser в PowerShell
  • Заключение

Перед началом работы: что нужно знать

Перед началом работы с Get-ADUser важно убедиться, что модуль Active Directory установлен. Без него командлет не будет работать, и вы столкнетесь с ошибкой:


Get-ADUser : The term 'Get-ADUser' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Get-ADUser
+ ~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Get-ADUser:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Эта ошибка возникает, если модуль Active Directory отсутствует в вашей системе.

Где уже доступны инструменты управления Active Directory?

Контроллер домена

На серверах, где установлена роль Active Directory Domain Services (AD DS), инструменты управления Active Directory устанавливаются автоматически. Это означает, что вы можете сразу использовать Get-ADUser, не выполняя дополнительных настроек.

Рядовой сервер (member server)

Если вы работаете на сервере, который не является контроллером домена, необходимо вручную установить инструменты управления Active Directory с помощью RSAT-ADDS (Remote Server Administration Tools).

Для этого выполните команду в PowerShell с правами администратора:


Install-WindowsFeature -Name RSAT-ADDS

Клиент Windows (например, Windows 11)

На клиентских системах Windows, таких как Windows 10 или 11, нужно установить инструменты удаленного управления Active Directory (RSAT). Сделать это можно с помощью следующей команды:


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

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

Как получить информацию о пользователе Active Directory

Для получения информации о конкретном пользователе в Active Directory необходимо знать уникальный идентификатор, например, SamAccountName или UserPrincipalName. Вот как это можно сделать:


  1. Получение информации по SamAccountName


SamAccountName — это логин пользователя, который часто используется для аутентификации. Чтобы получить информацию о пользователе, выполните команду:


Get-ADUser -Identity "Amanda.Morgan"

  • -Identity указывает конкретного пользователя по его SamAccountName.
  • Результат команды содержит основные атрибуты пользователя, такие как имя, логин и SID.


  1. Получение информации по UserPrincipalName (UPN)


UserPrincipalName — это уникальный адрес пользователя в формате email (например, Amanda.Morgan@exoip.com). Если вы хотите найти пользователя по UPN, используйте фильтр:


Get-ADUser -Filter {UserPrincipalName -eq "Amanda.Morgan@exoip.com"}

  • -Filter позволяет задать условие поиска.
  • UserPrincipalName -eq «значение»: указывает, что нужно найти пользователя с заданным UPN.

Как вывести всех пользователей Active Directory


  1. Получение всех пользователей Active Directory


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


Get-ADUser -Filter *

  • -Filter *: Указывает, что нужно получить всех пользователей без применения фильтров.
  • Вывод будет содержать только базовые свойства (например, имя и логин).


  1. Получение всех пользователей со всеми свойствами


Для отображения всех доступных свойств пользователей используйте параметр -Properties *:


Get-ADUser -Filter * -Properties *

  • Команда вернет весь набор данных о пользователях, включая такие свойства, как email, телефон, отдел, дата последнего входа и др.


  1. Получение всех пользователей с выбором конкретных свойств


Если вам нужны только определенные свойства, например, имя и UPN (UserPrincipalName), используйте Select-Object:


Get-ADUser -Filter * | Select-Object Name, UserPrincipalName

  • Select-Object Name, UserPrincipalName: Выводит только указанные свойства для всех пользователей.

Пример вывода:


Name            UserPrincipalName
----            -----------------
Amanda Morgan   Amanda.Morgan@exoip.com
John Smith      John.Smith@exoip.com


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


Чтобы отсортировать результат по имени, добавьте Sort-Object:


Get-ADUser -Filter * | Select-Object Name, UserPrincipalName | Sort-Object Name

  • Sort-Object Name: Сортирует пользователей в алфавитном порядке по имени.

Пример вывода:


Name            UserPrincipalName
----            -----------------
Amanda Morgan   Amanda.Morgan@exoip.com
John Smith      John.Smith@exoip.com
Zoe Brown       Zoe.Brown@exoip.com

Как подсчитать количество пользователей Active Directory

Для подсчета общего количества пользователей Active Directory можно использовать комбинацию команд Get-ADUser и Measure-Object.


(Get-ADUser -Filter * | Measure-Object).Count

Get-ADUser -Filter *

  • Извлекает всех пользователей Active Directory.
  • -Filter * указывает, что фильтр не применяется, и возвращаются все записи.

| Measure-Object

  • Подсчитывает количество объектов, переданных через конвейер (в данном случае — пользователей).

.Count

  • Возвращает числовое значение, которое является итоговым количеством объектов (пользователей).

Если в Active Directory содержится, например, 250 пользователей, команда вернет:


250

Альтернативный вариант с выборкой:

Если вам нужно подсчитать количество пользователей с определенными критериями (например, только активные пользователи), можно добавить фильтр. Например:

  • Подсчет активных пользователей:

(Get-ADUser -Filter {Enabled -eq $true} | Measure-Object).Count

  • Подсчет пользователей из определенного OU:

(Get-ADUser -Filter * -SearchBase "OU=Sales,DC=exoip,DC=local" | Measure-Object).Count

Получение email-адресов пользователей Active Directory

Для получения списка пользователей Active Directory и их основных адресов электронной почты (SMTP) можно использовать командлет Get-ADUser с выбором необходимых свойств.


Get-ADUser -Filter * -Properties EmailAddress | Select-Object Name, EmailAddress

-Properties EmailAddress

  • Добавляет в результат свойство EmailAddress, которое по умолчанию не отображается.

| Select-Object Name, EmailAddress

  • Выбирает только два свойства для вывода:
    • Name: Имя пользователя.
    • EmailAddress: Основной адрес электронной почты пользователя.

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


Name                 EmailAddress
----                 ------------
Amanda Morgan        amanda.morgan@exoip.com
John Smith           john.smith@exoip.com
Zoe Brown            zoe.brown@exoip.com


  1. Получение email пользователей из определенного OU:


Если нужно получить email-адреса пользователей из конкретного организационного подразделения (OU), используйте параметр -SearchBase:


Get-ADUser -Filter * -SearchBase "OU=Sales,DC=exoip,DC=local" -Properties EmailAddress | Select-Object Name, EmailAddress


  1. Сортировка по имени:


Если требуется отсортировать список по имени, добавьте Sort-Object:


Get-ADUser -Filter * -Properties EmailAddress | Select-Object Name, EmailAddress | Sort-Object Name

Как найти пользователей Active Directory по отделу

Чтобы вывести пользователей Active Directory с информацией об их отделах и дополнительными свойствами, такими как основной адрес электронной почты, можно использовать Get-ADUser. Это особенно полезно для администрирования и формирования отчетов.


Get-ADUser -Filter * -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department

-Properties EmailAddress, Department

  • Добавляет к результату свойства EmailAddress (адрес электронной почты) и Department (отдел). Эти свойства не отображаются по умолчанию.

| Select-Object Name, EmailAddress, Department

  • Оставляет только выбранные свойства для вывода:
    • Name: Имя пользователя.
    • EmailAddress: Основной адрес электронной почты.
    • Department: Название отдела.

Команда выведет список пользователей с их именами, email-адресами и отделами. Пример вывода:


Name                 EmailAddress              Department
----                 ------------              ----------
Amanda Morgan        amanda.morgan@exoip.com   IT Department
John Smith           john.smith@exoip.com      Sales
Zoe Brown            zoe.brown@exoip.com       Marketing


  1. Получение пользователей конкретного отдела


Если необходимо получить пользователей только из определенного отдела, добавьте фильтр по свойству Department:


Get-ADUser -Filter {Department -eq "Sales"} -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department

Пример вывода:


Name                 EmailAddress              Department
----                 ------------              ----------
John Smith           john.smith@exoip.com      Sales


  1. Сортировка по отделу


Для сортировки пользователей по отделу можно использовать Sort-Object:


Get-ADUser -Filter * -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department | Sort-Object Department

Как узнать дату последнего входа пользователей Active Directory

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


  1. Получение даты последнего входа всех пользователей


Чтобы вывести список всех пользователей Active Directory с их датами последнего входа, используйте следующую команду:


Get-ADUser -Filter * -Properties LastLogonDate | Sort-Object -Property LastLogonDate -Descending | Select-Object Name, LastLogonDate

-Properties LastLogonDate

  • Добавляет свойство LastLogonDate, которое показывает дату последнего входа.

Sort-Object -Property LastLogonDate -Descending

  • Сортирует список в порядке убывания даты (сначала самые недавние входы).

Select-Object Name, LastLogonDate

  • Выводит только имя пользователя и дату последнего входа.

Name                 LastLogonDate
----                 -------------
John Smith           01/15/2025 14:32:10
Amanda Morgan        01/10/2025 08:45:23
Zoe Brown            12/28/2024 11:22:17


  1. Получение пользователей, входивших за последние 90 дней


Если нужно вывести только тех пользователей, которые заходили в систему в последние 90 дней, используйте следующую команду:


$90days = (Get-Date).AddDays(-90)
Get-ADUser -Filter {LastLogonDate -gt $90days} -Properties LastLogonDate | Select-Object Name, UserPrincipalName, LastLogonDate

$90days = (Get-Date).AddDays(-90)

  • Создает переменную, содержащую дату, соответствующую 90 дням назад от текущей даты.

-Filter {LastLogonDate -gt $90days}

  • Фильтрует пользователей, у которых дата последнего входа больше (новее) этой даты.

Select-Object Name, UserPrincipalName, LastLogonDate

  • Выводит имя, UPN и дату последнего входа.

Name                 UserPrincipalName           LastLogonDate
----                 ----------------           -------------
John Smith           john.smith@exoip.com       01/15/2025 14:32:10
Amanda Morgan        amanda.morgan@exoip.com    01/10/2025 08:45:23


  1. Оптимизация для больших доменов


Если в вашей Active Directory большое количество пользователей, используйте -ResultSize для ограничения результата:


Get-ADUser -Filter * -Properties LastLogonDate -ResultSize 1000 | Sort-Object -Property LastLogonDate -Descending | Select-Object Name, LastLogonDate

Экспорт пользователей Active Directory в CSV-файл

Экспорт данных о пользователях Active Directory в формат CSV позволяет создавать отчеты и легко передавать данные в другие системы. Вот как это сделать с помощью Get-ADUser.


  1. Экспорт всех пользователей в файл CSV


Чтобы экспортировать всех пользователей с их основными свойствами, выполните следующую команду:


Get-ADUser -Filter * -Properties * | Select-Object Name, SamAccountName, EmailAddress, Department | Export-CSV -Path "C:\temp\ADUsers.csv" -NoTypeInformation -Encoding UTF8

Select-Object Name, SamAccountName, EmailAddress, Department

  • Выбирает только нужные свойства для экспорта:
    • Name: Имя пользователя.
    • SamAccountName: Учетная запись пользователя.
    • EmailAddress: Основной email-адрес.
    • Department: Название отдела.

Export-CSV -Path «C:\temp\ADUsers.csv»

  • Экспортирует данные в файл ADUsers.csv в указанной директории.

-NoTypeInformation

  • Убирает системную информацию о типах данных из CSV.

-Encoding UTF8

  • Указывает кодировку файла для корректного отображения данных.


  1. Экспорт пользователей из определенного OU


Если нужно экспортировать пользователей только из определенного организационного подразделения (OU), используйте параметр -SearchBase:


Get-ADUser -Filter * -SearchBase "OU=Sales,DC=exoip,DC=local" -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department | Export-CSV -Path "C:\temp\SalesUsers.csv" -NoTypeInformation -Encoding UTF8

-SearchBase

  • Ограничивает поиск только указанным OU (в данном случае Sales).


  1. Экспорт активных пользователей


Для экспорта только активных пользователей (свойство Enabled = True) используйте фильтр:


Get-ADUser -Filter {Enabled -eq $true} -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department | Export-CSV -Path "C:\temp\ActiveUsers.csv" -NoTypeInformation -Encoding UTF8

Пример содержимого CSV-файла

После выполнения команды, файл ADUsers.csv будет содержать следующие данные:


Name,SamAccountName,EmailAddress,Department
Amanda Morgan,amorgan,amanda.morgan@exoip.com,IT
John Smith,jsmith,john.smith@exoip.com,Sales
Zoe Brown,zbrown,zoe.brown@exoip.com,Marketing

Как получить пользователей из определенного OU (организационного подразделения)

Работа с пользователями Active Directory в определенных организационных единицах (OU) позволяет ограничить область поиска и анализировать только нужные данные.

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

Для вывода всех пользователей из конкретного OU используйте следующую команду:


Get-ADUser -Filter * -SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" | Select-Object Name, UserPrincipalName

-SearchBase

  • Указывает путь к OU, в котором нужно искать пользователей. В данном примере — это OU=Users,OU=Company,DC=exoip,DC=local.

Пример результата:


Name                 UserPrincipalName
----                 -----------------
Amanda Morgan        amanda.morgan@exoip.com
John Smith           john.smith@exoip.com
Zoe Brown            zoe.brown@exoip.com


  1. Отфильтровать пользователей из отдела внутри OU


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


Get-ADUser -Filter {Department -eq "Sales"} -SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" -Properties EmailAddress | Select-Object Name, UserPrincipalName, EmailAddress

-Filter {Department -eq «Sales»}

  • Фильтрует пользователей, принадлежащих отделу Sales.

Name                 UserPrincipalName           EmailAddress
----                 ----------------           ------------
John Smith           john.smith@exoip.com       john.smith@exoip.com


  1. Поиск только в указанном OU (без подподразделений)


По умолчанию команда Get-ADUser ищет пользователей во всех уровнях указанного OU, включая подподразделения. Чтобы ограничить поиск только указанным OU, используйте параметр -SearchScope со значением OneLevel:


Get-ADUser -Filter * -SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" -SearchScope OneLevel | Select-Object Name, UserPrincipalName

-SearchScope OneLevel

  • Ограничивает поиск только на указанном уровне OU.

Как определить менеджера (руководителя) пользователей Active Directory

Менеджер (руководитель) пользователя Active Directory хранится в поле Manager. Используя Get-ADUser, можно получить как менеджера для конкретного пользователя, так и для всех пользователей. Рассмотрим несколько примеров.


  1. Получить менеджера для одного пользователя


Чтобы узнать, кто является менеджером конкретного пользователя, выполните следующую команду:


Get-ADUser -Identity "Amanda.Morgan" -Properties Manager | Select-Object Name, @{Name='Manager';Expression={(Get-ADUser $_.Manager).Name}}

-Identity «Amanda.Morgan»

  • Указывает имя пользователя (SamAccountName или UserPrincipalName), для которого нужно получить информацию.

-Properties Manager

  • Добавляет свойство Manager в вывод.

@{Name=’Manager’;Expression={(Get-ADUser $_.Manager).Name}}

  • Получает имя менеджера, используя значение свойства Manager.
  • Get-ADUser $_.Manager выполняет дополнительный запрос для получения данных о менеджере.

Пример результата:


Name                 Manager
----                 -------
Amanda Morgan        John Smith


  1. Получить менеджеров для всех пользователей


Если необходимо вывести список всех пользователей вместе с их менеджерами, используйте следующую команду:


Get-ADUser -Filter * -Properties Manager | Select-Object Name, @{Name='Manager';Expression={(Get-ADUser $_.Manager -ErrorAction SilentlyContinue).Name}}

-ErrorAction SilentlyContinue

  • Скрывает ошибки, если у пользователя не задан менеджер (например, поле Manager пустое).

Select-Object

  • Формирует вывод с именами пользователей и их менеджеров.

Name                 Manager
----                 -------
Amanda Morgan        John Smith
Zoe Brown            Sarah Taylor
John Doe             (отсутствует)


  1. Фильтрация пользователей по менеджеру


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


Get-ADUser -Filter {Manager -eq "CN=John Smith,OU=Users,DC=exoip,DC=local"} | Select-Object Name, UserPrincipalName


  1. Экспорт пользователей и их менеджеров в CSV


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


Get-ADUser -Filter * -Properties Manager | Select-Object Name, @{Name='Manager';Expression={(Get-ADUser $_.Manager -ErrorAction SilentlyContinue).Name}} | Export-CSV -Path "C:\temp\ADUsersManagers.csv" -NoTypeInformation -Encoding UTF8

Как найти активных пользователей Active Directory

Чтобы получить список всех активных (включенных) пользователей в Active Directory, можно использовать фильтр Enabled -eq $true. Это позволяет отобразить только те учетные записи, которые не отключены.


Get-ADUser -Filter {Enabled -eq $true} | Select-Object Name, UserPrincipalName | Sort-Object Name

Get-ADUser -Filter {Enabled -eq $true}

  • Фильтрует учетные записи пользователей, у которых свойство Enabled равно true (активные пользователи).

| Select-Object Name, UserPrincipalName

  • Отбирает для вывода только имя пользователя (Name) и его UserPrincipalName (UPN), что часто используется для входа.

| Sort-Object Name

  • Сортирует список пользователей в алфавитном порядке по имени.

Пример вывода:


Name                 UserPrincipalName
----                 -----------------
Amanda Morgan        amanda.morgan@exoip.com
John Smith           john.smith@exoip.com
Zoe Brown            zoe.brown@exoip.com


  1. Получить активных пользователей с дополнительными свойствами:


Чтобы включить в результат дополнительные данные, такие как email или отдел, добавьте их через параметр -Properties:


Get-ADUser -Filter {Enabled -eq $true} -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department | Sort-Object Name


  1. Экспорт в CSV:


Для создания отчета с активными пользователями можно экспортировать результат в файл CSV:


Get-ADUser -Filter {Enabled -eq $true} | Select-Object Name, UserPrincipalName | Export-CSV -Path "C:\temp\ActiveADUsers.csv" -NoTypeInformation -Encoding UTF8

Как найти отключенных пользователей Active Directory

Для получения списка всех отключенных учетных записей пользователей в Active Directory можно использовать фильтр Enabled -eq $false. Эта команда позволяет быстро выявить неактивных пользователей для управления или анализа.


Get-ADUser -Filter {Enabled -eq $false} | Select-Object Name, UserPrincipalName | Sort-Object Name


  1. Получить отключенных пользователей с дополнительными свойствами:


Если требуется получить больше информации об отключенных пользователях, например, email-адрес или отдел, добавьте их через параметр -Properties:


Get-ADUser -Filter {Enabled -eq $false} -Properties EmailAddress, Department | Select-Object Name, EmailAddress, Department | Sort-Object Name


  1. Экспорт в CSV:


Чтобы сохранить результат в CSV-файл для последующего анализа, используйте следующую команду:


Get-ADUser -Filter {Enabled -eq $false} | Select-Object Name, UserPrincipalName | Export-CSV -Path "C:\temp\DisabledADUsers.csv" -NoTypeInformation -Encoding UTF8


  1. Фильтрация по OU:


Если нужно получить отключенных пользователей из конкретного организационного подразделения (OU), добавьте параметр -SearchBase:


Get-ADUser -Filter {Enabled -eq $false} -SearchBase "OU=Users,OU=Company,DC=exoip,DC=local" | Select-Object Name, UserPrincipalName

Поиск пользователей с заданным значением свойства Active Directory

Если нужно найти пользователей Active Directory, у которых установлено определенное свойство (например, номер мобильного телефона), можно использовать Get-ADUser с фильтром. Ниже приведен пример команды для получения пользователей с настроенным номером мобильного телефона.


Get-ADUser -Filter {MobilePhone -like "*"} -Properties MobilePhone | Select-Object Name, MobilePhone

-Filter {MobilePhone -like «*»}

  • Фильтрует пользователей, у которых свойство MobilePhone не пустое (т.е. оно задано).
  • -like «*» означает, что значение свойства может быть любым, но оно должно существовать.

-Properties MobilePhone

  • Загружает свойство MobilePhone, так как оно не входит в список стандартных свойств, отображаемых по умолчанию.

| Select-Object Name, MobilePhone

  • Выводит только имя пользователя (Name) и его номер мобильного телефона (MobilePhone).

Пример вывода:


Name                 MobilePhone
----                 -----------
Amanda Morgan        +1-555-123-4567
John Smith           +1-555-987-6543
Zoe Brown            +1-555-555-5555


  1. Получить пользователей с другим заданным свойством:


Если нужно найти пользователей с настроенным другим свойством, например, Title (должность), измените фильтр следующим образом:


Get-ADUser -Filter {Title -like "*"} -Properties Title | Select-Object Name, Title

Поиск пользователей без заданного значения свойства Active Directory

Чтобы найти пользователей Active Directory, у которых номер мобильного телефона не указан, можно использовать Get-ADUser с фильтром -notlike «. Вот пример команды:


Get-ADUser -Filter {MobilePhone -notlike "*"} -Properties MobilePhone | Select-Object Name, MobilePhone

-Filter {MobilePhone -notlike «*»}

  • Фильтрует пользователей, у которых свойство MobilePhone пустое (не задано).
  • -notlike «*» означает, что свойство либо отсутствует, либо не имеет значения.

-Properties MobilePhone

  • Добавляет свойство MobilePhone в результат (по умолчанию оно не отображается).

| Select-Object Name, MobilePhone

  • Отбирает только имя пользователя (Name) и свойство MobilePhone (которое в этом случае будет пустым).

Пример вывода:


Name                 MobilePhone
----                 -----------
John Doe
Jane Doe
Test User

Как найти пользователей Active Directory, чье имя начинается с определенного текста

Для поиска пользователей, чьи имена начинаются с конкретного текста, например, «Аманда», можно использовать Get-ADUser с фильтром -like.


Get-ADUser -Filter "Name -like 'Amanda*'" | Select-Object Name, UserPrincipalName

-Filter «Name -like ‘Amanda*'»

  • Фильтрует пользователей, чьи имена начинаются с «Amanda».
  • -like ‘Amanda*’: Звездочка (*) означает, что после «Amanda» может быть любое количество символов.

Пример вывода:


Name                 UserPrincipalName
----                 -----------------
Amanda Morgan        amanda.morgan@exoip.com
Amanda Taylor        amanda.taylor@exoip.com


  1. Поиск с учетом регистра:


Active Directory не чувствителен к регистру, поэтому Amanda, AMANDA или amanda дадут одинаковый результат.

Как найти пользователей Active Directory, чей email заканчивается определенным текстом

Эти команды позволяют извлечь пользователей, чей почтовый адрес заканчивается на указанный домен, а также сортировать их по имени. Рассмотрим два сценария: поиск по одному домену и по нескольким доменам.


  1. Получить пользователей, чей email заканчивается на один домен


Для извлечения всех пользователей, чей email заканчивается на домен @exoip.com, выполните следующую команду:


Get-ADUser -Filter "EmailAddress -like '*@exoip.com'" -Properties EmailAddress | Select-Object Name, EmailAddress | Sort-Object Name

-Filter «EmailAddress -like ‘*@exoip.com'»

  • Фильтрует пользователей, чей адрес электронной почты заканчивается на @exoip.com.

-Properties EmailAddress

  • Загружает свойство EmailAddress (по умолчанию оно не отображается).

| Select-Object Name, EmailAddress

  • Отбирает только имя пользователя (Name) и его адрес электронной почты (EmailAddress).

| Sort-Object Name

  • Сортирует пользователей в алфавитном порядке по имени.

Пример результата:


Name                 EmailAddress
----                 ------------
Amanda Morgan        amanda.morgan@exoip.com
John Smith           john.smith@exoip.com
Zoe Brown            zoe.brown@exoip.com


  1. Найти пользователей с email, заканчивающимся на несколько доменов


Если нужно найти пользователей с адресами электронной почты, заканчивающимися на @exoip.com или @o365info.com, используйте следующий фильтр:


Get-ADUser -Filter {(EmailAddress -like '*@exoip.com') -or (EmailAddress -like '*@o365info.com')} -Properties EmailAddress | Select-Object Name, EmailAddress | Sort-Object Name

-Filter {(EmailAddress -like ‘*@exoip.com’) -or (EmailAddress -like ‘*@o365info.com’)}

  • Фильтрует пользователей с адресами, заканчивающимися либо на @exoip.com, либо на @o365info.com.

Пример результата:


Name                 EmailAddress
----                 ------------
Amanda Morgan        amanda.morgan@exoip.com
John Smith           john.smith@o365info.com
Zoe Brown            zoe.brown@exoip.com

Примеры использования Get-ADUser в PowerShell

Лучший способ понять, как использовать командлет Get-ADUser в PowerShell-скриптах, — это изучить примеры готовых скриптов. Они помогут увидеть практическое применение и научат эффективно использовать эту команду для работы с данными Active Directory.

  • Как импортировать пользователей AD из CSV с помощью PowerShell
  • Как экспортировать пользователей AD в CSV с помощью PowerShell

Заключение

Вы узнали, как эффективно использовать Get-ADUser в PowerShell. Этот мощный командлет позволяет извлекать данные о пользователях и фильтровать их в соответствии с вашими требованиями в среде Active Directory. Используя различные параметры и фильтры, вы можете создавать подробные отчеты, содержащие именно те свойства пользователей, которые вам нужны, и легко экспортировать их для дальнейшего анализа или администрирования.

Вам понравилась эта статья? Тогда вам, скорее всего, будет интересна другая полезная статья Как проверить работоспособности Active Directory с помощью скрипта PowerShell.

Интересуешься IT и системным администрированием? Подпишись на SysAdminHub в телеграмм, чтобы узнавать обо всем первым — t.me/SysAdminHub

Статья была полезна? Поддержи автора, и благодаря твоей помощи новые материалы будут выходить еще чаще:

The Get-ADUser is the most commonly used PowerShell cmdlet for retrieving Active Directory user information, including attributes like usernames, email addresses, account activity, group memberships, contact details, job titles, organizational data, etc. Using the Get-ADUser cmdlet, you can get the value of any attribute of an AD user account, list domain users, export user reports to CSV/TXT files, and use various criteria to select and filter domain users.

Contents:

  • Get-ADUser Cmdlet in the Active Directory PowerShell Module
  • How to Find AD User and List Properties with Get-ADUser
  • Get-ADUser -Filter Examples
  • Exporting Active Directory Users to CSV/TXT Files with PowerShell
  • Get-ADUser Usage Examples

Previously, AD user account information was retrieved using the ADUC graphical console (including saved AD queries), VBScript, the dsquery tool, and other tools. All of these tools can be easily replaced with the Get-ADUser cmdlet.

Get-ADUser Cmdlet in the Active Directory PowerShell Module

To use the Get-ADUsercmdlet to get information from AD, you must have the Active Directory module for PowerShell installed on the computer.

This module is installed on AD domain controllers along with the Active Directory Domain Services (AD DS) role. The AD module can also be installed manually on any computer (it is part of the RSAT package):

  • Windows Server 2012 R2 and newer: Install-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
    install RSAT-AD-PowerShell on Windows Server

  • Windows 11 and 10: Get-WindowsCapability -Name RSAT.ActiveDirectory* -Online | Add-WindowsCapability -Online

Check that the module is installed, and if necessary, import it into your PowerShell session:

Get-Module ActiveDirectory
Import-Module ActiveDirectory

If RSAT-AD-PowerShell is not installed, you get an error when running the Get-ADUser command:

Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

The term get-aduser is not recognized as the name of a cmdlet, function, script file

There is also a way to use the AD-PowerShell module without installing RSAT. Simply copy the main module files to a computer and import the module into the PowerShell session:

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

View the complete syntax and list of available arguments for the Get-ADUser cmdlet:

help Get-ADUser

get-aduser syntax examples

How to Find AD User and List Properties with Get-ADUser

Let’s look at how to use the Get-ADUser cmdlet to find different information about domain users. The cmdlet can retrieve information for a single AD user or multiple users.

Any non-admin domain user can use the Get-ADUser cmdlet to get information from AD (the domain admin or similar delegated AD permissions are not required). Any user can view the values of AD object attributes, except for protected attributes (see the example in the post Local Administrator Password Solution, LAPS).

To display the list of all domain user accounts:

Get-ADUser -filter *

Get-ADUser -filter * - gel all users in domain

Important. It is not recommended to run this command against the Active Directory domains with a large number of user accounts. This can place a heavy load on the domain controller providing the AD information.

To get the properties of a specific user, use the –Identity parameter. Identity can be a username, login (SAMAccountName), DN (Distinguished Name), SID, or GUID.

The following PowerShell commands will return the same result for the same AD user account:

Get-ADUser –Identity b.smith
Get-ADUser –Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=woshub,DC=loc"
Get-ADUser –Identity "Brian Smith"

get-aduser by identity

By default, the Get-ADUser cmdlet returns only 10 basic user attributes (out of more than 120 user account properties): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, account status (Enabled: True/False according to the UserAccountControl AD attribute), etc.

Lists the values of all available attributes for the specified user.

Get-ADUser -identity b.smith -properties *

get-aduser list all user object properties

The Get-ADUser cmdlet with the Properties * switch lists all the attributes of the AD user and their values (including empty ones). A similar list of user attributes is available in the Active Directory Users and Computers graphical snap-in (dsa.msc) under the Attribute Editor tab.

Then we’ll go to the formatting of Get-ADUser output so that the necessary user attributes are displayed. For example, you want to display the values of the following user properties:

For example, I want to display information about whether a user’s password has expired (Expired: True/False), the last time the password was changed, when the user password expires, and the last time the user logged into the domain. This info is stored in the following user account attributes:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires
  • LastLogonTimestamp

Run the command:

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

get-aduser - properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

To display only the specific user attributes in the output (remove all unnecessary attributes), filter them using Select-Object -Property or Format-Table. The following command displays the password status for all AD users in a convenient table view:

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

Get-ADUser get password info for all users with format-table

To get AD user info from a specific domain controller, use the -Server switch:

Get-ADUser –Server DC01.woshub.com –Identity tstuser

To retrieve user data from another Active Directory domain, specify the DC name and use the -Credential parameter to provide the access credentials:

$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcred

Get-ADUser -Filter Examples

The Get-ADUser -Filter parameter allows to filter the list of users by one or more attributes. This helps in finding Active Directory users whose attributes match specific criteria.

For example, I want to list active (Enabled) user accounts whose name contains “Dmitry”. To do this, a filter with multiple conditions is used. User attributes must meet both filter conditions in this example (-and).

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

Get-AdUser with filter

To select values for user attributes, you can use all of the standard PowerShell logical comparison operators (-eq, -ne, -gt, -ge, -lt, -le, -like, -notlike, -and, -or, etc.)

You can use the Sort-Object cmdlet to sort the result list by a specific user property (attribute). In addition, you can use the Where-Object cmdlet to specify multiple filter criteria at once.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=woshub,DC=com'| where {$_.name –like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Get-ADUser - filtering with Where-Object and Sort-Object

Hint. When looking up Active Directory users using the Get-ADUser command, specifying the criteria by using the Filter attribute is better for performance than using the pipeline to the Where-Object cmdlet. In this case, the results of the selection are filtered at the domain controller, and a smaller set of data is sent back to your computer over the network.

You can use LDAP filters in Get-ADUser queries. An LDAP filter can be specified by using the -LdapFilter attribute.

Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'

Exporting Active Directory Users to CSV/TXT Files with PowerShell

The Get-ADUser command can be used to output a list of domain users and their properties to a text file:

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

Or, use the Export-CSV cmdlet to export users to a CSV file, that you can then easily open in Excel.

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like "*Dmitry*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8

Export a company email address list from AD to a CSV file. Later, you can import this CSV address list into desktop email clients (such as Outlook or 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\adress_list.csv

Get-ADUser Usage Examples

Let’s show several useful PowerShell command examples for querying Active Directory users with various filters. Combine them to get the list of AD user objects you need:

Display AD users, whose names begin with Joe:

Get-ADUser -filter {name -like "Joe*"}

Count the total number of user accounts in the Active Directory:

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

List disabled Active Directory users:

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

List AD user email addresses:

Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=woshub,DC=com'| select-object Name, EmailAddress

Get-ADUser EmailAddress

List enabled users and their email addresses:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Find the users who don’t have an Email address set:

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

Get active users who don’t have a Department specified in their properties:

Get-AdUser -Filter "Enabled -eq 'True'" -Properties * |where Department -eq $null|select name,enabled, Department

Get the creation date of the Active Directory user account:

Get-ADuser -Filter * -Properties Name, WhenCreated | Select name, whenCreated

List users created in the last 24 hours:

$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}

List the accounts with expired passwords (password expiration options are set in the domain password policy):

Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpired

Users who haven’t changed their domain passwords in the last 90 days:

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

Find inactive user accounts (not logged into the domain for more than 180 days).  The LastLogonTimestamp attribute value is used to get the logon history of a domain user.

$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled –eq $True} |  Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize

To get a user’s photo from Active Directory and save it to a JPG file:

$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte

To get a list of users only from a specific domain container (Organizational Unit), use the -SearchBase parameter:

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

Select users from multiple OUs at once using the following PowerShell commands:

$OUs = "OU=NY,DC=woshub,DC=com","OU=LA,DC=woshub,DC=com","OU=MA,DC=woshub,DC=com"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}

List the AD groups that the user account is a member of:

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

List the users from the OU that are members of a specific domain security group:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=woshub,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

List users from the OU who are members of a specific domain security group:

Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=woshub,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}

The Get-ADUser and Add-ADGroupMember cmdlets can be used to create dynamic AD user groups (depending on city, job title, department, etc.).

Task: get the user’s company name from AD and save it to a CSV file for a list of user accounts in a text file (one account per line). You can then import this CSV file into Excel:

Import-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, Company |
Select Name, Company |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}

List users from the OU, except for members of a specific group:

$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=woshub,DC=com’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}

Export a list of AD users with the Organizational Unit names (where they are located) to the Out-GridView table:

get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView

powershell: export active directory user list to out-gridview table

Check that the AD user account exists:

$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{  Write-Host "User $SamAccountName doesn’t exist"}

List the domain computers the user is allowed to log on (logon restriction through the LogonWorkstations AD attribute).

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

Tip.  The Get-ADComputercmdlet is used to get the properties of a computer or to search for multiple computers in Active Directory.

Introduction

The Get-ADUser cmdlet in PowerShell provides many parameters for finding one or more users in an Active Directory (AD) domain.

By default, PowerShell runs using the account that is logged on to the machine. If you want to run a command using a different account, you can force PowerShell to prompt you for the credentials by using this switch before your command:

$cred =Get-Credential
Introduction

Searching for a Specific User

-Identity Parameter

Use the -Identity parameter if you know which AD user you want to get:

Get-ADUser -Identity “identifier”

Specify one of the following for the identifier:

  • DistinguishedName (DN)
  • SamAccountName
  • GUID
  • SID

Example

Get-ADUser -Identity "ABBEY.Crawford"
-Identity Parameter

Limiting a Search to a Particular OU

-SearchBase Parameter

Use the -SearchBase parameter to limit the search to a specific OU, specified by its distinguished name (DN):

Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "distinguishedName of OU"

Example

Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local"
-SearchBase Parameter

-SearchScope Parameter

Combine the SearchBase and SearchScope parameters to limit the search to a particular OU and a specified number of levels of sub-OUs. For example, to find user accounts in an OU and its immediate child OUs, specify a value of 1 for SearchScope. To include both child and grandchild OUs, use a value of 2.

Get-ADUser -SearchBase " distinguishedName of OU " -SearchScope "2"

Example

Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local" -SearchScope "2"
-SearchScope Parameter

Filtering for Specific Sets of Users

-Filter Parameter

If you don’t know the exact value of any identifier, you can specify a property to filter on and a value for the filter, as follows:

Get-ADUser -Filter “filter value”

Operators

Operator Meaning Sample expression
-eq Equal to Name -like ‘Inga’
-ne Not equal to Country -ne ‘US’
-gt Greater than BadLogonCount -gt ‘0’
-ge Greater than or equal Modified -ge ’06-04-2021 12:00:00?
-lt Less than LastLogonTimeStamp -lt ’01-08-2020?
-le Less than or equal Created -le ’01-08-2020?
-like Wildcard search Mail -like ‘*@xyz.com’
-notlike Wildcard search with negation Department -notlike ‘*’
-and And Country -eq ‘US’ -and Department -eq ‘Operations’
-or Or Country -eq ‘US’ -or -Country -eq ‘UK’

Finding Users with a Certain Given Name

To search for a user with his or her first name or part of the name, use the -Filter parameter with the -like clause and a value.

The following example shows the use of the Filter parameter, that involves the AD attribute, givenName. It returns users whose givenName contains Abbey.

Get-ADUser -Filter “givenname -Like ‘Abbey’”
Finding Users with a Certain Given Name

Finding Users with Similar Names

You can modify the previous command using the wildcard operator to get all users whose name starts with a particular string, as follows:

Get-ADUser -Filter "Name -like 'Abb*'" | Select Name,givenname,surname,samAccountName,distinguishedname | ftG
Finding Users with Similar Names

Finding Users with Similar Names

Finding All Enabled Users

If you want to see all enabled users, you can use this cmdlet:

Get-ADUser -filter {Enabled -eq "true"} | ft
Finding All Enabled Users

Finding Disabled Users

Finding disabled users can be quite valuable to facilitate AD cleanup. Using a simple command with one filter, “-Filter “Enabled -eq ‘false’”” could return hundreds of disabled users, as some companies prefer to keep their Active Directory objects for auditing purposes. Use the -SearchBase filter with a specific OU to limit results. For example, this cmdlet will find all disabled user accounts in a particular OU:

Get-ADUser -Filter “Enabled -eq 'false'” -SearchBase "CN=Users,DC=Knox,DC=lab" -Properties * | Select Name,Enabled |ft
Finding Disabled Users

Finding Users Who Have Email Addresses

To find all users who have mailboxes assigned to them, use the following command:

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail
Finding Users Who Have Email Addresses

Finding Accounts with Password Expiry Not Set

To strengthen security, you might want to find all accounts whose ‘passwordneverexpires’ attribute is set to true, as follows:

Get-ADUser -Filter {passwordneverexpires -eq "true"} | Select Name, sAMAccountName
Finding Accounts with Password Expiry Not Set

Finding Stale User Accounts

At times, we need to filter out the user accounts that have not been in use for some time. Here is how to find all user accounts that have not been used during the last 60 days:

$CutoffDate = (Get-Date).AddDays(-60)
Get-ADUser -Filter "LastLogonDate -lt '$CutoffDate'" -Properties LastLogonDate | Select Name, LastLogonDate
Finding Stale User Accounts

Finding Users Created on a Particular Date

To see all user accounts created on a particular date in Active Directory, you can use this command:

Get-ADUser -Filter {Created -lt '7/30/2021'} | Select Name
Finding Users Created on a Particular Date

Combining Multiple Filters

You can combine multiple filters to define complex criteria for finding users.

Example 1

The following command will return all enabled users from the Sales department:

Get-ADUser -Filter "Enabled -eq 'true' -and Department -like 'Sales'" -Properties * | Select Name, Department |ft
Combining Multiple Filters

Example 2

The following cmdlet will return all users whose department attribute is not null and whose name begins with the letter A:

Get-ADUser -filter {Department -ne "null"} | Where-Object Name -like 'A*'
Combining Multiple Filters

Controlling Which Properties Are Displayed

-Properties Parameter

By default, the Get-ADUser command returns only a handful of parameters. If you want the extended list of properties of a user, use this cmdlet:

Get-ADUser -Identity “Identifier” -Properties *
-Properties Parameter

Displaying a Specific Set of Properties

Alternatively, you can explicitly list the properties you want to see for a user:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,Enabled,mail,department,company,title,c,st,streetaddress |ft
Displaying a Specific Set of Properties

Displaying Group Membership

To see the membership of a user, use this cmdlet:

Get-ADUser -Identity Abbey.crawford -Properties memberof | Select-Object -ExpandProperty memberof
Displaying Group Membership

Displaying Email Address

If you want to see a specific user’s email address, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,mail |ft
Displaying Email Address

Displaying User Principal Name (UPN)

To retrieve a user’s UPN, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,userprincipalname |ft
Displaying User Principal Name (UPN)

Displaying SAM Account Name

To display a user’s SAM account name, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,samAccountName |ft
Displaying SAM Account Name

Displaying Display Name

If you want to see the display name of a user (for example, since it might be different in ADUC), you can use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,displayname |ft
Displaying Display Name

Displaying Distinguished Name

To see the distinguished name of a user, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,distinguishedname |ft
Displaying Distinguished Name

Displaying Proxy Addresses

If you want to see the proxy addresses of a user, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,proxyaddresses |ft
Displaying Proxy Addresses

Displaying a User’s Manager

To show the SAM account name of a user’s manager, use this command:

Get-ADUser “User Identifier” -properties * | select  amAccountName, @{Name=’Manager’;Expression={(Get-ADUser($_.manager)).samaccountname}}
Displaying a User’s Manager

Displaying Employee ID

To see the employee ID of a user, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,employeeid |ft
Displaying Employee ID

Displaying Telephone Numbers

To find all phone numbers of a user, use this command:

Get-ADUser -Identity “User Identifier” -Properties * | Select *Phone*
Displaying Telephone Numbers

To display these values in the form of a table, use this command:

Get-ADUser -Identity “User Identifier” -Properties * | Select Name, *Phone* | ft
Displaying Telephone Numbers

Displaying Password Expiry Date and Time

To see the password expiry date for an account, use this cmdlet:

Get-ADUser -Identity “User Identifier” -Properties msDS-UserPasswordExpiryTimeComputed | select Name, {[datetime]::FromFileTime($_.”msDS-UserPasswordExpiryTimeComputed”)}
Displaying Password Expiry Date and Time

Displaying Account Creation Date

To see when a user account was created in AD, use this command:

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated
Displaying Account Creation Date

Displaying Last Logon Date and Time

If you want to see the last time a user logged on to any system, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,lastlogondate |ft
Displaying Last Logon Date and Time

Displaying Last Password Change Date and Time

To see when a user last changed their password, use this cmdlet:

Get-ADUser -Identity Abbey.Crawford -properties PwdLastSet,PasswordLastSet  | sort Name | ft Name,PwdLastSet,PasswordLastSet
Displaying Last Password Change Date and Time

Displaying the Values of Extension Attributes

Organizations can use AD extension attributes to store additional information about users. For example, O365 license information can be stored in ExtensionAttribute1. To see this information, use this cmdlet:

Get-ADUser -Identity “Abbey.Crawford” -Properties * | Select sAMAccountName, extensionAttribute1
Displaying the Values of Extension Attributes

Sorting the Output

To sort the output of the Get-ADUser command using a particular property, use the following command:

Get-ADUser -Filter * | Select Name | Sort-Object -Property Name
Sorting the Output

Exporting Data to a CSV File

Example 1

The following command will find all user accounts created in the last 180 days, sort them by name, and export selected information about them to a CSV file:

Get-ADUser -filter * -properties * | Where-Object { $_.created -gt  (get-date).AddDays(-180)} | select-object Name, Created | sort Name | export-csv C:\Accounts.csv -NoTypeInformation
Exporting Data to a CSV File

Example 2

The command below finds all users in a particular OU and outputs selected details about them to a to a CSV file:

Exporting Data to a CSV File

Here is the CSV file:

Exporting Data to a CSV File

Conclusion

The Get-ADUser command is a versatile way to find one or more users that meet certain criteria. You can control which user properties are displayed and how the information is sorted, and export the output to a CSV file.

If you’re interested in a more comprehensive Active Directory and Azure AD management solution, take a look at Netwrix Directory Manager. It offers a more advanced management shell that is also fully compatible with PowerShell.

Since 2012, Jonathan Blackwell, an engineer and innovator, has provided engineering leadership that has put Netwrix GroupID at the forefront of group and user management for Active Directory and Azure AD environments. His experience in development, marketing, and sales allows Jonathan to fully understand the Identity market and how buyers think.

Automate Active Directory Groups & User Management

Время на прочтение4 мин

Количество просмотров19K

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

Для решения этих задач нам может помочь PowerShell, инструмент, который помимо прочего, позволяет легко проводить аудит учетных записей пользователей Active Directory.  Для этих целей мы будем использовать один из самых популярных командлетов Active Directory PowerShell — Get-ADUser. С помощью этого командлета мы можем получить как указанный пользовательский объект, так и выполнить настраиваемый поиск для получения нескольких пользовательских объектов.

У вас есть несколько вариантов того, как идентифицировать пользователя: можно использовать Distinguished Name (DN), Globally Unified Identifier (GUID), идентификатор безопасности (SID) или имя учетной записи Security Account Manager (SAM). О том, как можно использовать эти варианты на практике мы поговорим чуть дальше, а пока нам надо подготовить нашу инфраструктуру PowerShell для работы с Active Directory. 

Для начала работы с AD нам необходимо установить модуль Active Directory. Сделать это можно двумя способами. Прежде всего, можно установить Remote Server Administration Tools (RSAT). Сделать это можно следующим образом: нажать Start, далее Settings, затем выбрать Apps и Optional Features, после этого добавить компонент с помощью Add и в открывшемся списке выбрать RSAT: Active Directory Domain Services and Lightweight Directory Services Tools option. Для завершения установки нажать Install.

Второй способ установки RSAT еще проще. Мы можем воспользоваться функционалом самого PowerShell для установки непосредственно с узла Windows Update.

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

Приступим к поискам

Для поиска данных о пользователях в AD мы будем использовать параметр -Identity. Откроем модуль Active Directory Module for Windows Powershell в режиме Администратора.

Для начала поищем пользователя по его атрибуту sAMAccountName

Get-ADUser  Имя_Пользователя

В результате выполнения команды мы получили значения основных полей из AD для данного пользователя. Но мы можем также поискать пользователя по другим параметрам. Например, предположим, что нам известно только значение поля objectGUID (или GUID). В таком случае команда будет иметь следующий вид:

Get-ADUser идентификатор_GUID

Еще один довольно распространенный случай, когда нам известно только значение SID и необходимо узнать, кто скрывается под этим значением. В таком случае мы также используем GetADUser с указанием SID:

Get-ADUser идентификатор_SID

Когда объектов слишком много

Представленная выше команда Get-ADUser удобна при работе в небольших средах, благодаря простоте использования. Но если в вашем домене десятки тысяч объектов, то Get-ADUser может создать заметную нагрузку на домен контроллер, с которым вы взаимодействуете при выполнении данного командлета. Дело в том, что Get-ADUser извлекает все пользовательские объекты в вашем подключенном домене AD.

Чтобы избежать подобной ситуации нам необходимо отфильтровать всю базу пользователей и выполнить поиск конкретных пользователей на основе некоторых свойств. Для решения этой задачи предназначен параметр ‘-filter’, указывающий строку запроса, которая извлекает объекты AD. В этой строке используется синтаксис PowerShell Expression Language (EL). Синтаксис PEL обеспечивает расширенную поддержку преобразования типов для типов значений, получаемых параметром Filter. Синтаксис использует представление по порядку, что означает, что оператор помещается между операндом и значением. Давайте рассмотрим несколько примеров, чтобы получить лучшее представление.

Для начала поищем все аккаунты, которые имеют статус Enabled:

Get-ADUser -filter {Enabled -eq "true"}

Здесь после параметра filter мы в фигурных скобках указываем то логическое выражение, по которому должна осуществляться фильтрация. В данном случае мы получим все активные аккаунты в домене. Если мы к примеру, хотели бы получить список всех пользователей, у которых заполнено поле E-Mail, наш запрос имел бы следующий вид:

Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail

Результаты работы команды мы передаем на вход команде ft (Format Table) которая переводит вывод в более читаемый вид.

Таким образом, вы можете использовать -Filter для поиска по другим полям объектов Active Directory.

Еще один пример — это поиск конкретного пользователя по заданному шаблону. Здесь мы найдем все записи, где вхождение такого шаблона используется в имени или фамилии пользователя.

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

 Давайте еще сократим нагрузку на нашу инфраструктуру AD ограничив поиск только по определенным Organizational Unit (OU). Для этого воспользуемся параметром -SearchBase.

Get-ADUser -SearchBase 'OU="Test Users",DC=domain,DC=local' -filter * -Properties Name,EmailAddress | ft Name,EmailAddress

В этом примере мы выводим имена и почтовые адреса пользователей, ограничивая область действия запроса только OU “Test Users”.

По умолчанию GetADUser возвращает десять основных полей, которые мы уже видели ранее, однако мы можем изменить вывод этой команды, указав с помощью ключа Properties те поля, которые нас интересуют. Например, если нам необходимо узнать, когда пользователи в последний раз меняли свои пароли, то это можно сделать с помощью следующей команды:

Get-ADUser -filter * -Properties Name,PasswordLastSet | ft Name,PasswordLastSet

Еще один полезный пример использования -Properties это получение списка пользователей со временем создания их аккаунтов.

Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated

Заключение

В этой статье мы рассмотрели полезные на практике примеры работы с Active Directory с помощью PowerShell. В следующей статье мы поговорим о том, как PowerShell может помочь при анализе журналов событий.

Также хочу пригласить вас на бесплатный урок: «Написание скриптов на PowerShell и их использование», который пройдет уже в понедельник.

  • Зарегистрироваться на бесплатный урок

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Qemu guest agent windows download
  • Lets encrypt ssl сертификат инструкция windows
  • Работают только системные звуки на windows 10
  • Сколько гигабайт занимает windows 10 на жестком диске
  • Аналоги skype для windows 7