Как можно вывести список всех членов группы безопасности в Active Directory? Самый действенный и быстрый метод — сделать отбор из группы с помощью PowerShell. Команды небольшие, однострочные, но с их помощью можно не только вывести результат в консоль, но и провести экспорт во внешний текстовый файл.
Вывести список всех членов группы безопасности в Active Directory и сохранить его в csv можно вот таким скриптом:
$sg = Read-Host "Введите название группы" Get-ADGroupMember $sg | Select-Object Name, SamAccountName | Sort Name, SamAccountName | ConvertTo-Csv -NoTypeInformation | Out-File $PSScriptRoot\list.csv
Скрипт выдаст отображаемое имя пользователей и их логин. Сортировка, само собой, будет по имени пользователя. Если в графе отображаемого имени Вы придерживаетесь политики построения Фамилия Имя Отчество — пользователи будут отсортированы в алфавитном порядке по фамилии.
Благодаря общесистемной переменной $PSScriptRoot файл list.csv сохранится рядом со скриптом.
Если появится время — доработаю данный скрипт и выложу отдельно.
UPD.: время появилось и вот он скрипт.
Если будет необходимо получить список членов какой-либо группы безопасности напрямую в консоль и что-то делать с каждым из них — можно воспользоваться вот такой конструкцией:
# Получить логины членов группы #
$users = Get-ADGroupMember "Администраторы домена" | Select-Object SamAccountName | Sort SamAccountName | ConvertTo-Csv -NoTypeInformation | select -Skip 1
# Отбросить лишние кавычки #
$users = $users.TrimStart('"').TrimEnd('"')
# Поместить полученные логины в цикл #
foreach ($user in $users) { Get-ADUser -Identity $user }
В данном примере цикл только собирает данные о каждом пользователе в отдельности. Что делать с пользователями в данном цикле — это уже на Ваше усмотрение.
Чтобы получить только выключенных пользователей в группе делаем так:
Get-ADGroup "Администраторы домена" | Get-ADGroupMember | Get-ADUser | Where-Object {$_.Enabled -eq $false} | Select-Object name | Sort-Object -Property @{Expression = "Name";Descending = $False} | ft -HideTableHeaders
Список включенных пользователей можно получить, если сменить $false в конструкции Where-Object {$_.Enabled -eq $false} на $true.
Теперь не составит труда запихнуть вывод в переменную и скормить её циклу foreach.
В качестве бонуса: вывести и сохранить данные обо всех отключенных пользователях в домене поможет вот такая команда:
Search-ADAccount -AccountDisabled | Select-Object Name, SamAccountName | Sort-Object Name | ConvertTo-Csv -NoTypeInformation | Out-File $PSScriptRoot\list.csv