Поиск по сайту

telegram

Интересуешься 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

Скрипт 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:

  1. Откройте Active Directory Users and Computers.
  2. Щелкните правой кнопкой мыши на целевой организационной единице (OU) и выберите Properties (Свойства).
  3. Перейдите на вкладку Attribute Editor (Редактор атрибутов).
  4. В списке атрибутов найдите distinguishedName.
  5. Дважды щелкните по атрибуту, чтобы открыть строку, и скопируйте её значение.

Если вкладка 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


Комментарии (0)

Здесь не опубликовано еще ни одного комментария

Оставьте свой комментарий

0 Значки
Вложения (0 / 5)
Поделитесь своим местоположением