是否可以在一个命令中读出两组?

时间:2019-04-04 06:26:08

标签: powershell export-to-csv

我有一个脚本,该脚本读取并保存ADGroup的用户并将其另存为.csv,但是我需要对两个具有相同属性的单独组进行处理。有没有一种方法可以在一个PowerShell行中读出2个组?

我有适用的代码,但这似乎不是一个好的解决方案

 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 个答案:

答案 0 :(得分:2)

当前,两个组都有重复的代码。我们可以简单地循环这些命令。 (%是Foreach-Object的别名)

"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
}