Экспорт пользователей Active Directory в Excel: скрипт PowerShell Get-ADUser
Задача: предоставить руководству или отделу кадров список сотрудников
Руководство компании или отдел кадров часто просят предоставить актуальный телефонный справочник или список всех учетных записей компании с указанием их ФИО, должности, отдела и статуса блокировки. Переписывать данные вручную из оснастки dsa.msc — долго и неэффективно.
Решение:
Использование одного короткого скрипта PowerShell с командлетом Get-ADUser, который собирает нужные поля из Active Directory и формирует файл .csv, открывающийся прямо в Microsoft Excel.
Готовый скрипт экспорта пользователей в CSV/Excel
- Запустите консоль PowerShell от имени Администратора на контроллере домена или на ПК с установленным пакетом RSAT.
- Выполните следующий скрипт (скопируйте целиком):
Get-ADUser -Filter * -Properties DisplayName, Title, Department, TelephoneNumber, Mail, Enabled, CanonicalName | Select-Object @{N='ФИО';E={$_.DisplayName}}, @{N='Должность';E={$_.Title}}, @{N='Отдел';E={$_.Department}}, @{N='Телефон';E={$_.TelephoneNumber}}, @{N='Email';E={$_.Mail}}, @{N='Активен';E={if($_.Enabled){'Да'}else{'Заблокирован'}}}, @{N='Подразделение OU';E={$_.CanonicalName}} | Export-Csv -Path "C:\AD_Users_List.csv" -NoTypeInformation -Encoding UTF8 -Delimiter ";" - Откройте диск
C:\и дважды кликните по созданному файлуAD_Users_List.csv. Он автоматически откроется в Microsoft Excel с правильным разделением на колонки.
Полезные модификации фильтра:
Выгрузить ТОЛЬКО активных сотрудников (без заблокированных):
Get-ADUser -Filter 'Enabled -eq $true' -Properties ...Выгрузить сотрудников только из конкретного подразделения (OU):
Get-ADUser -Filter * -SearchBase "OU=Buhgalteria,OU=Users,DC=company,DC=local" -Properties ... Частые вопросы (FAQ)
Почему в Excel вместо русских букв отображаются 'кракозябры'?
Старые версии Excel по умолчанию ожидают кодировку Windows-1251. Если текст отображается некорректно, замените в скрипте параметр -Encoding UTF8 на -Encoding Default.
Почему при запуске Get-ADUser выдается ошибка 'Команда не найдена'?
На компьютере не установлен модуль Active Directory. На сервере выполните: Install-WindowsFeature RSAT-AD-PowerShell, либо на Windows 10/11 включите компонент RSAT: Active Directory Domain Services.
Как добавить в выгрузку дату последнего входа пользователя?
Добавьте в блок -Properties параметр LastLogonDate и в Select-Object строку @{N='Последний вход';E={$_.LastLogonDate}}.
Зачем в Export-Csv указан параметр -Delimiter ';'
В русскоязычных версиях Windows и Excel стандартным системным разделителем колонок CSV является точка с запятой (;), а не запятая.