2015-04-16 2 views
0

Я принял код snipits со многих сайтов и почти получил то, что мне нужно. Единственная проблема - мне нужно просто вернуть группы, которые относятся к GroupCategory Security.Powershell - Get-ADGroup типа Безопасность для всех пользователей

Я пытаюсь выполнить поиск в подразделении в Active Directory, вернуть пользователей, а затем перечислить каждую группу безопасности, в которой они являются членами, отсортированные по имени (как пользователя, так и группы, к которым они принадлежат). Вывод, что текстовый файл

$FilePath = 'C:\' 
$EndDate = (Get-Date).tostring("yyyyMMdd") 
$FileName = 'GroupMembership By User - ' + $EndDate + '.txt' 

$Users=Get-ADUser -Filter * -Properties * -SearchBase "OU=My Accounts,DC=DOMAIN,DC=COM" | sort-object -property Name 

ForEach ($User in $Users) { 
$GroupMembership = ($User.memberof | foreach-object {(Get-ADGroup $_).Name ;}) -join ','; 
$User.Name + ',' + $GroupMembership #|out-file -append "$FilePath$FileName" 
} 

#| Where-Object {$_.GroupCategory -EQ "Security"} 

Мой вывод, разделенных запятыми и сортируются по имени пользователя в каждой строке, но я не могу показаться, чтобы получить группы отсортированный (менее важное место в общем зачете), ни группа листинга, чтобы исключить группы рассылки (должен иметь). Последняя строка, прокомментированная, вернет только группы безопасности, но независимо от того, где я ее разместил, она не работает или не выполняет команду.

TIA

ответ

0

Как насчет этого тогда. У вас была логика в комментарии. Наверное, вы не были уверены, куда его поместить. Я также удалить некоторые из избыточности в создании $GroupMembership

$Users | ForEach-Object { 
    $GroupMembership = $_.memberof | Get-ADGroup | Where-Object{$_.GroupCategory -eq "Security"} | Sort-Object Name | Select -ExpandProperty Name 
    (@($_.Name) + $GroupMembership) -join "," 
} | Add-Content $FilePath$FileName 

Чтобы попытаться использовать трубопровод без ошибок я изменил свою ForEach конструкцию. Таким образом, мы можем наклеить на Add-Content в конце трубы.

$GroupMembership заполнен выводом Get-AdGroup, и мы удаляем группы распределения * с вашим предложением Where-Object. Простой вид и расширение оставляют нас только с именами групп.

* Мне нужно поэкспериментировать, но я не уверен, как это реагирует на группы безопасности с включенной поддержкой почты.

+0

спасибо. Это сработало отлично. Мой вопрос был определенно с тем, где положить мой Where-Object, я продолжал получать ошибки, используя его независимо от того, где он был. Мне нужно будет изучить секцию с включенной поддержкой почты, я не думал об этом, хотя мы обычно не используем их. – user2257620