Автоматизированный отчёт по пользователям Active Directory

16.09.2025

Active directory - неотъемлемая часть любой IT инфраструктуры, а неотъемлемая часть Active Directory - пользователи.


В работе системного администратора важно уделять внимание актуальности данных, которые внесены в системы. А при большом количестве учет пользователей это может стать рутинной и трудновыполнимой задачей, ведь оснастка "Active Directory - Пользователи и компьютеры AD" не предоставляет инструментов для подобной задачи.


Несмотря на это, в руках системного администратора есть PowerShell.

При помощи PowerShell можно получить очет в формате файла Excel - какие пользователи и когда в последний раз заходили в свои учетные записи. Скрипт получает всех пользователей AD и формирует таблицу при помощи модуля "ImportExcel"


Вот пример того, как выглядит итоговая таблица:


Настройка:

Установить модуль можно при помощи команды в терминале PowerShell:

     Install-Module -Name ImportExcel -Scope CurrentUser

(-Scope CurrentUser означает установку только для текущего пользователя)

В случае, если скрипт запускается не с контроллера домена, понадобится установка средст администрирования RSAT - набор компонентов для удаленного администрирования AD

По умолчанию Excel файл сохраняется в папку Документы


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


Исполняемый скрипт:
* примечание - в данном примере используется поле LastLogonTimestamp - это поле имеет смысл использовать только если у Вас несколько DC, но если DC один, то лучше заменить на LastLogon, так как LastLogonTimestamp по-умолчанию синхронизируется лишь раз в 14 дней)


# Импортируем модули
Import-Module ActiveDirectory
Import-Module ImportExcel
# Получаем всех пользователей с нужными свойствами
Write-Host "Получение данных пользователей из Active Directory..." -ForegroundColor Cyan
$users = Get-ADUser -Filter * -Properties Name, SamAccountName, DistinguishedName, LastLogonTimestamp |
    Select-Object Name,
                  SamAccountName,
                  @{Name="OU"; Expression={($_.DistinguishedName -split ',',2)[1]}},
                  @{Name="LastLogon"; Expression={
                      if ($_.LastLogonTimestamp) {
                          [DateTime]::FromFileTime($_.LastLogonTimestamp).ToString("dd.MM.yyyy HH:mm:ss")
                      } else {
                          "Никогда"
                      }
                  }}
# Выводим в консоль
Write-Host "`n=== Список пользователей ===" -ForegroundColor Green
$users | Format-Table -AutoSize
# Путь к файлу в папке "Документы"
$filePath = Join-Path -Path ([Environment]::GetFolderPath("MyDocuments")) -ChildPath "AD_Users_Report.xlsx"
# Экспортируем в Excel
$users | Export-Excel -Path $filePath -WorksheetName "Пользователи AD" -AutoSize -TableName "UsersTable" -FreezeTopRow
Write-Host "Данные сохранены в: $filePath" -ForegroundColor Green"

Давайте создавать вместе!

Оставьте свои данные или свяжитесь с нами и мы проконсультируем по вопросам реализации IT-решений и найдем лучший подход к разработке

Контакты

Офис: г. Казань, Аделя Кутуя 88
Почта: info@nabla-lab.ru
Телефон: +7 (965) 595-62-78

Оставьте данные и мы свяжемся с Вами