===== PowerShell - Получаем список членов группы с дополнительными атрибутами ===== Скриптоблок для выгрузки в текстовый файл всех членов определённой доменной группы безопасности с информацией о компании, подразделении и должности с последующей сортировкой и разбивкой на блоки с зависимости от конкретного атрибута (company): Get-ADGroupMember -Recursive "KOM-SRV-Users" | ForEach { Get-ADUser -filter {samaccountname -eq $_.SamAccountName} ` -Properties displayName, company, title, department } ` | Sort-Object company,displayName ` | Format-Table displayName,company,department,title -GroupBy company -AutoSize ` | Out-File -Width 4000 "C:\Temp\ADGroupUsersByCompany.txt" Получаем перечень email-адресов всех членов определённой группы безопасности: Get-ADGroupMember -Recursive "KOM-SRV-Users" | ForEach { Get-ADUser -filter {samaccountname -eq $_.SamAccountName} ` -Properties mail } ` | Sort-Object mail ` | Format-Table mail Если нужно получить список уникальных email-адресов для членов сразу нескольких групп безопасности и выгрузить эти данные в текстовый файл, то можно воспользоваться следующим примером: $ADGroups = @("AD-Group1","AD-Group2") $DataFile = "C:\Temp\Mail-Users.txt" $ADMembers = @() # Получаем полный список членов всех групп ForEach ($ADGroup in $ADGroups) { $ADMembers += Get-ADGroupMember -Recursive $ADGroup | ForEach { Get-ADUser -filter {samaccountname -eq $_.SamAccountName} ` -Properties mail } } # Сортируем, откидываем неуникальные значения и выгружаем в файл $ADMembers | Sort-Object mail | Get-Unique ` | Format-Table mail -HideTableHeaders ` | Out-File -Width 2147483647 $DataFile # Нормализуем данные в файле $NormalizeData = [System.IO.File]::ReadAllText($DataFile) # Удаляем пустые строки $NormalizeData = $NormalizeData.Trim() # Удаляем все пробелы $NormalizeData = $NormalizeData.Replace(' ', '') [System.IO.File]::WriteAllText($DataFile, $NormalizeData) {{tag>PowerShell "Active Directory" Membership}} ~~DISCUSSION~~