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

Обновлено 23.11.2023

get-aduser logoДобрый день! Уважаемые читатели и гости IT блога Pyatilistnik.org. В прошлый раз мы с вами научились запускать скрипт PowerShell с помощью System Center Configuration Manager, я показал вам, какие плюсы есть в этом методе. В сегодняшней статье я хочу с вами поделиться своим немалым опытом использования командлета Get-ADuser в разных ситуациях. Я покажу реальные, рабочие примеры с которыми вы можете столкнуться в повседневной жизни, администрируя Active Directory. По мере появления задач и скриптов PowerShell решающих их, статья будет дополняться и улучшаться. Все вопросы и пожелания я жду в комментариях.

Что за командлет Get-ADuser

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

Он может использоваться для выполнения различных задач, включая:

  • Получение списка пользователей Active Directory: Вы можете использовать командлет Get-ADUser без параметров, чтобы получить список всех пользователей в домене Active Directory.
  • Фильтрация пользователей по определенным критериям: Позволяет фильтровать пользователей по различным атрибутам, таким как имя, фамилия, логин, почта и т. д. Вы можете использовать параметр -Filter для определения критериев фильтрации.
  • Получение специфической информации о пользователях: Командлет Get-ADUser позволяет получить специфическую информацию о пользователях группы, свойства профиля и т. д. Вы можете использовать параметр -Properties для указания необходимых свойств пользователя.
  • Проверка статуса активности пользователей: Может использоваться для проверки статуса активности пользователей. Вы можете использовать свойство Enabled для определения, активирован ли учетная запись пользователя.
  • Автоматизация задач в Active Directory: Может быть включен в скрипты PowerShell для автоматизации задач в Active Directory. Например, вы можете использовать его для получения списка пользователей и выполнения определенных действий на основе этой информации.

Преимущества командлета Get-ADUser в Active Directory перед похожими программами:

  • Интеграция с PowerShell: Командлет Get-ADUser является частью модуля Active Directory для PowerShell, что обеспечивает единый и удобный интерфейс для автоматизации задач в Active Directory. PowerShell предоставляет мощные возможности для обработки данных и выполнения сложных операций.
  • Гибкость и масштабируемость: Позволяет гибко фильтровать пользователей и получать только необходимую информацию. Он также может быть легко интегрирован в скрипты PowerShell для выполнения сложных задач в Active Directory.
  • Удобство использования: Командлет предоставляет простой и понятный синтаксис, который легко понять и использовать даже для новичков в PowerShell.
  • Информативность вывода: Возвращает объекты пользователей Active Directory, которые содержат полезную информацию о пользователях. Это позволяет легко обрабатывать и анализировать полученные данные для последующего импорта их в различные системы.

Для удобства выполнения скриптов, я вам советую использовать PowerShell в режиме администратора

Как получить у списка пользователей значения Company и Department

Постановка задачи:

  1. Получить список логинов Active Directory из файла, расположенного по пути и положить их переменную
  2. Найти среди этих логинов те, что имеют {Enabled -eq "True"} (Выключены) и помещаем их в переменную
  3. Для каждого логина из 2 шага получить значения полей Company и Department
  4. Полученные данные выгрузить в файл по указанному пути, в виде логин, Company, Department

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

Файл со списком логинов Active Directory

# Шаг 1: Получить список логинов из файла и положить их в переменную
$logins = Get-Content -Path "C:\Temp\Users.txt"

# Шаг 2: Найти логины, у которых свойство Enabled равно "True" и поместить их в переменную
$enabledLogins = $logins | Where-Object { (Get-ADUser $_).Enabled -eq "True" }

# Шаг 3: Для каждого логина из шага 2 получить значения полей Company и Department
$loginDetails = foreach ($login in $enabledLogins) {
$user = Get-ADUser $login -Properties Company, Department
[PSCustomObject]@{
Login = $login
Organization = $user.Company
Department = $user.Department
}
}

# Шаг 4: Выгрузить полученные данные в файл
$loginDetails | Export-Csv -Path "C:\Temp\Users-Department.txt" -NoTypeInformation -Encoding Unicode

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

Get-ADuser файл с полученными Company, Department

Как получить у списка пользователей адреса электронной почты

Постановка задачи, для списка ФИО сотрудников необходимо получить их адреса электронной почты. Это реальная ситуация, когда необходимо сделать рассылку по определенным сотрудникам:

  1. Берем список ФИО пользователей Active Directory из файла по указанному пути
  2. Далее у каждого из них получаем атрибут mail (именно он содержит значение e-mail)
  3. Выводим список mail адресов и сохраняем его в файл по указанному пути

# Читаем список ФИО пользователей из файла
$users = Get-Content -Path "C:\Temp\users.txt"

# Создаем пустой массив для хранения email-адресов
$mailList = @()

# Проходимся по каждому пользователю
foreach ($user in $users) {
# Получаем атрибут mail для каждого пользователя
$mail = Get-ADUser -Filter "Name -eq '$user'" -Properties mail | Select-Object -ExpandProperty mail

# Добавляем email-адрес в массив
$mailList += $mail
}

# Записываем список email-адресов в файл txt
$mailList | Out-File -FilePath "C:\Temp\users-email.txt" -Force

Предполагается, что у вас установлен модуль Active Directory для PowerShell. Если его нет, установите его с помощью команды Install-Module -Name ActiveDirectory. Можно данный код просто выполнять на контроллере домена.

Get-ADComputer файл со списком email

Как получить список привилегированных учетных записей

Если перед вами стоит задача, получить имена и samaccountname у привилегированных учетных записей в домене, а это напомню у кого атрибут admincount равен единицы. Атрибут adminCount в Active Directory указывает, что объект является административным объектом. Когда этот атрибут установлен в значение 1, это означает, что объект является административным, и на него распространяются дополнительные права и ограничения. Этот атрибут используется для управления доступом к определенным административным функциям и ресурсам в Active Directory. Например, делегирование на OU или администратор домена. Выполните вот такой запрос.

Get-ADuser -filter * -properties * | where {$_.enabled -eq "true"} | where {$_.admincount -eq "1"} | select Name, samaccountname

Автор - Сёмин Иван

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

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