我拼凑了下面的powershell命令,将作为安全组成员的服务器列表导出到csv。我有许多命令来生成它自己的csv。我不想有十几个csv文件,而是希望生成一个csv,包含两个列、服务器名和它所在的安全组。这是如何做到的呢?
Get-ADGroupMember -identity "SecGrp-123" -server "test.net" | select name | sort-object name | export-csv "SecGrp-123.csv" -NoTypeInformation
Get-ADGroupMember -identity "SecGrp-456" -server "test.net" | select name | sort-object name | export-csv "SecGrp-456.csv" -NoTypeInformation发布于 2021-02-10 17:36:19
我猜你是在找这样的东西:
Write-Output SecGrp-123, SecGrp-456 -PipelineVariable groupName |
ForEach-Object {
Get-ADGroupMember -Identity $_ -Server test.net | Sort-Object Name
} |
Select-Object Name, @{ n='Group'; e={ $groupName } } |
Export-Csv out.csv -NoTypeInformation注意:上面按照每个组的名称对服务器进行排序。如果希望在所有组中按名称进行排序,请将Sort-Object Name调用移至ForEach-Object调用之外,并将其放在后者之后作为一个新的管道段。
如果Get-ADGroupMember接受组名字符串作为管道输入(我无法验证这一点),则可以简化为:
Write-Output SecGrp-123, SecGrp-456 -PipelineVariable groupName |
Get-ADGroupMember -Server test.net |
Sort-Object Name |
Select-Object Name, @{ n='Group'; e={ $groupName } } |
Export-Csv out.csv -NoTypeInformation注意:这将根据所有组的服务器名称进行排序;要对每个组进行排序,请使用Sort-Object Group, Name,它也将按排序顺序列出组。
另请参阅:
-PipelineVariable parameter (PSv4+;别名-pv),它将cmdlet的当前输出对象保存在给定名称的变量中,以便以后在下游cmdlet的脚本块中使用。中定义Select-Object属性的机制。
https://stackoverflow.com/questions/66141836
复制相似问题