Можно ли считывать две группы в одной команде? - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть скрипт, который читает и сохраняет пользователя ADGroup и сохраняет его как .csv, но мне нужно сделать это для 2 отдельных групп с одинаковыми свойствами. Есть ли способ прочитать две группы в одной строке PowerShell?

У меня есть рабочий код для него, но он не кажется хорошим решением

 Get-ADGroupmember  "Group1" | Get-ADUser|    
select GivenName,Surname,sAMAccountName
|Sort-Object Surname |
Export-Csv -Delimiter "`t" "myPath\dat.csv" 
-NoTypeInformation -Encoding     Unicode -Append

 Get-ADGroupmember  "Group2" | Get-ADUser|    
select GivenName,Surname,sAMAccountName
|Sort-Object Surname |
Export-Csv -Delimiter "`t" "myPath\dat.csv" 
-NoTypeInformation -Encoding     Unicode -Append

Это прекрасно работает, но я хотел бы знать, могу ли я сократить это до одной строки кода.

Спасибо за ответы заранее!

1 Ответ

2 голосов
/ 04 апреля 2019

В настоящее время у вас есть повторяющийся код для обеих групп.Мы можем просто зациклить эти команды.(% является псевдонимом для объекта Foreach)

"Group1", "Group2" | % { Get-ADGroupmember  $_ | Get-ADUser| select GivenName,Surname,sAMAccountName | Sort-Object Surname | Export-Csv -Delimiter "`t" "myPath\dat.csv" -NoTypeInformation -Encoding Unicode -Append }

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

$Groups = "Group1", "Group2"
$path = "myPath\dat.csv"
Foreach ($Group in $Groups) {
    Get-ADGroupmember $Group | Get-ADUser | Select-Object GivenName,Surname,sAMAccountName | Sort-Object Surname | Export-Csv -Delimiter "`t" $path -NoTypeInformation -Encoding Unicode -Append
}
...