Экспорт нескольких выходов в foreach - PullRequest
2 голосов
/ 04 марта 2020

Я хочу экспортировать некоторые данные, в частности пользователя AD вместе с его группами AD.

Мой текущий код:

$users = import-csv -path C:\path

    foreach ($user in $users) {
    $user | select name,SamAccountName | ft
    Get-ADPrincipalGroupMembership $user.samaccountname | select name
    #export-csv -path C:\path-NoTypeInformation -Append
}

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

Возможно, есть лучший способ добиться этого?

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете использовать Select-Object для сортировки «связывания» информации вместе с парой вычисленных свойств, ссылающихся на текущие свойства $user:

foreach ($user in $users) {
    Get-ADPrincipalGroupMembership $user.samaccountname |Select Name,@{Name='User';Expression={$user.Name}},@{Name='SAMAccountName';Expression={$user.SAMAccountName}} |Export-Csv -Path C:\path -NoTypeInformation -Append
}

Если вы хотите сгруппировать вывод в оболочке по имени пользователя, но отображать только имя группы, вы можете использовать Format-Table Name -GroupBy User:

# collect the information
$groupMemberships = foreach ($user in $users) {
    Get-ADPrincipalGroupMembership $user.samaccountname |Select Name,@{Name='User';Expression={$user.Name}},@{Name='SAMAccountName';Expression={$user.SAMAccountName}}
}

# format console output 
$groupMemberships |Format-Table Name -GroupBy User

# export
$groupMemberships |Export-Csv -Path C:\path -NoTypeInformation -Append
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...