Поиск по сайту
Интересуешься IT и системным администрированием? Подпишись на наш канал, где мы делимся инсайдами, новостями и практическими советами! Прокачай свои навыки вместе с нами!
Как экспортировать пользователей AD в CSV с помощью PowerShell
Мы хотим экспортировать информацию о пользователях Active Directory в CSV-файл с помощью PowerShell. Зачем нам нужно просматривать список пользователей AD с помощью PowerShell? Например, чтобы убедиться, что у каждого пользователя AD в Active Directory указан правильный номер мобильного телефона. Это важно, так как служба поддержки проверяет данные в Active Directory перед тем, как связаться с пользователем. В этой статье вы узнаете, как экспортировать пользователей Active Directory в CSV-файл с помощью PowerShell.
Онлайн-курс: Zabbix 6. Мониторинг IT инфраструктуры предприятия.
Курс предлагает глубокое изучение Zabbix 6 и охватывает все ключевые аспекты: от установки и конфигурации до продвинутого мониторинга и автоматизации. Курс подходит как для начинающих, так и для опытных администраторов.
Содержание:
- Экспорт информации о пользователях AD, скрипт PowerShell
- Экспорт пользователей Active Directory в CSV с помощью PowerShell
- Шаг 1: Подготовка скрипта для экспорта пользователей AD
- Шаг 2: Получение уникального имени (Distinguished Name)
- Шаг 3: Запуск скрипта экспорта пользователей AD
- Шаг 4: Открытие отчета CSV с данными пользователей AD
- Заключение
Экспорт информации о пользователях AD, скрипт PowerShell
Скрипт Export-ADUsers.ps1 для PowerShell выполнит экспорт на основе указанного вами distinguishedName. После выполнения скрипта отчет будет сохранен в CSV-файл. Вы сможете открыть его в Microsoft Excel или любом другом приложении, поддерживающем формат CSV.
Скрипт собирает следующую информацию для каждого пользователя:
- Имя
- Фамилия
- Отображаемое имя
- Логин пользователя
- Основное имя пользователя (UPN)
- Улица
- Город
- Штат/регион
- Почтовый индекс
- Страна/регион
- Должность
- Отдел
- Компания
- Руководитель
- Организационная единица (OU)
- Описание
- Офис
- Номер телефона
- Дополнительный номер телефона
- Электронная почта
- Мобильный телефон
- Пейджер
- Заметки
- Статус учетной записи
- Дата создания учетной записи
- Дата последнего входа пользователя
Экспорт пользователей Active Directory в CSV с помощью PowerShell
Давайте рассмотрим шаги, которые позволят экспортировать пользователей Active Directory в CSV-файл с использованием PowerShell. Следуйте инструкциям, чтобы быстро и эффективно получить нужный отчет.
Шаг 1: Подготовка скрипта для экспорта пользователей AD
Скачайте скрипт Import-ADUsers.ps1 и поместите его в папку C:\scripts на вашем контроллере домена. Если папка scripts отсутствует, создайте её.
Убедитесь, что файл разблокирован, чтобы избежать ошибок при выполнении скрипта. Подробнее об этой проблеме можно узнать в статье Как исправить ошибку «Отсутствует цифровая подпись» при запуске скрипта PowerShell.
Альтернативный вариант: скопируйте код скрипта ниже и вставьте его в Блокнот. Сохраните файл с именем Export-ADUsers.ps1 и поместите его в папку C:\scripts.
<#
.SYNOPSIS
Export-ADUsers.ps1
.DESCRIPTION
Export Active Directory users to CSV file.
.CHANGELOG
V1.00, 05/24/2021 - Initial version
V1.10, 04/01/2023 - Added progress bar, user created date, and OU info
V1.20, 05/19/2023 - Added function for OU path extraction
#>
# Split path
$Path = Split-Path -Parent "C:\scripts\*.*"
# Create variable for the date stamp in log file
$LogDate = Get-Date -f yyyyMMddhhmm
# Define CSV and log file location variables
# They have to be on the same location as the script
$Csvfile = $Path + "\AllADUsers_$LogDate.csv"
# Import Active Directory module
Import-Module ActiveDirectory
# Function to extract OU from DistinguishedName
function Get-OUFromDistinguishedName {
param(
[string]$DistinguishedName
)
$ouf = ($DistinguishedName -split ',', 2)[1]
if (-not ($ouf.StartsWith('OU') -or $ouf.StartsWith('CN'))) {
$ou = ($ouf -split ',', 2)[1]
}
else {
$ou = $ouf
}
return $ou
}
# Set distinguishedName as searchbase, you can use one OU or multiple OUs
# Or use the root domain like DC=exoip,DC=local
$DNs = @(
"OU=Sales,OU=Users,OU=Company,DC=exoip,DC=local",
"OU=IT,OU=Users,OU=Company,DC=exoip,DC=local",
"OU=Finance,OU=Users,OU=Company,DC=exoip,DC=local"
)
# Initialize a List to store the data
$Report = [System.Collections.Generic.List[Object]]::new()
# Loop through every DN
foreach ($DN in $DNs) {
$Users = Get-ADUser -SearchBase $DN -Filter * -Properties *
# Display progress bar
$progressCount = 0
foreach ($User in $Users) {
$progressParams = @{
Id = 0
Activity = "Retrieving User"
Status = "$progressCount of $($Users.Count)"
PercentComplete = ($progressCount / $Users.Count) * 100
}
Write-Progress @progressParams
# Create PSCustomObject for each user
$ReportLine = [PSCustomObject]@{
"First name" = $User.GivenName
"Last name" = $User.Surname
"Display name" = $User.DisplayName
"User logon name" = $User.SamAccountName
"User principal name" = $User.UserPrincipalName
"Street" = $User.StreetAddress
"City" = $User.City
"State/province" = $User.State
"Zip/Postal Code" = $User.PostalCode
"Country/region" = $User.Country
"Job Title" = $User.Title
"Department" = $User.Department
"Company" = $User.Company
"Manager" = if ($User.Manager) { (Get-AdUser $User.Manager -Properties DisplayName -ErrorAction SilentlyContinue).DisplayName } else { $null }
"OU" = Get-OUFromDistinguishedName $User.DistinguishedName
"Description" = $User.Description
"Office" = $User.Office
"Telephone number" = $User.telephoneNumber
"Other Telephone" = if ($User.otherTelephone) { $User.otherTelephone -join ";" } else { $null }
"E-mail" = $User.Mail
"Mobile" = $User.mobile
"Pager" = $User.pager
"Notes" = $User.info
"Account status" = if ($User.Enabled) { 'Enabled' } else { 'Disabled' }
"User created date" = $User.WhenCreated
"Last logon date" = $User.lastlogondate
}
# Add the report line to the List
$Report.Add($ReportLine)
$progressCount++
}
}
$SortReport = $Report | Sort-Object "Display name"
# Export report to CSV file
$SortReport | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding utf8 #-Delimiter ";"
- Строки 54, 55, 56: Укажите целевой distinguishedName. Вы можете задать одну организационную единицу (OU) или несколько (как показано в примере).
Шаг 2: Получение уникального имени (Distinguished Name)
Для настройки скрипта PowerShell вам потребуется указать значение distinguishedName. Следуйте инструкциям ниже, чтобы найти его в Active Directory:
- Откройте Active Directory Users and Computers.
- Щелкните правой кнопкой мыши на целевой организационной единице (OU) и выберите Properties (Свойства).
- Перейдите на вкладку Attribute Editor (Редактор атрибутов).
- В списке атрибутов найдите distinguishedName.
- Дважды щелкните по атрибуту, чтобы открыть строку, и скопируйте её значение.
Если вкладка Attribute Editor недоступна, убедитесь, что в меню View консоли Active Directory Users and Computers включена опция Advanced Features. После активации дополнительных функций вкладка станет видимой.
Шаг 3: Запуск скрипта экспорта пользователей AD
Откройте PowerShell от имени администратора и выполните скрипт для экспорта пользователей в CSV-файл. Дождитесь завершения работы скрипта.
C:\scripts\.\Export-ADUsers.ps1
Шаг 4: Открытие отчета CSV с данными пользователей AD
Перейдите в папку scripts и убедитесь, что файл с именем AllADUsers_ создан. Откройте его, чтобы проверить экспортированные данные.
Откройте CSV-файл в вашем любимом приложении для работы с таблицами. В нашем примере используется Microsoft Excel.
Заключение
Вы освоили процесс экспорта пользователей Active Directory в CSV-файл с использованием PowerShell. Учетные записи пользователей содержат большое количество данных, и PowerShell предоставляет возможность гибко настраивать отчет в соответствии с вашими задачами. Это позволяет получить только ту информацию, которая действительно важна, и упростить дальнейшую работу с данными.
Вам понравилась эта статья? Тогда вам, скорее всего, будет интересна другая полезная статья Как импортировать пользователей AD из CSV с помощью PowerShell.
Интересуешься IT и системным администрированием? Подпишись на SysAdminHub в телеграмм, чтобы узнавать обо всем первым — t.me/SysAdminHub
Статья была полезна? Поддержи автора, и благодаря твоей помощи новые материалы будут выходить еще чаще:
