pscustomobject 每行多行
pscustomobject multiple lines per row
到目前为止我有一些代码,但我希望它能产生一个 table 每个组的用户有多行。
目前,它创建了一个像这样的 table:
Group
Users
abcgroup1
Alice
abcgroup1
Bob
abcgroup2
Bob
abcgroup2
Jason
abcgroup3
Eve
我希望它能像这样创建一个 table:
Group
Users
abcgroup1
Alice
Bob
abcgroup2
Bob
Jason
abcgroup3
Eve
$Groups = get-adgroup -Filter 'name -like "*abc*"'
$Results = foreach( $Group in $Groups ){
Get-ADGroupMember -Identity $Group | foreach {
[pscustomobject]@{
Group = $Group.Name
Users = $_.Name
}
}
}
$Results
$Results | Export-Csv C:\abc_search.txt -NoTypeInformation
您可以使用 -join
运算符连接 CRLF `r`n
。这将导致多行 string
:
$Groups = Get-ADGroup -Filter "name -like '*abc*'"
$Results = foreach($Group in $Groups)
{
[pscustomobject]@{
Group = $Group.Name
Members = (Get-ADGroupMember -Identity $Group).Name -join "`r`n"
}
}
$Results | Format-Table -Wrap -Autosize
$Results | Export-Csv C:\abc_search.csv -NoTypeInformation
请注意,我在 Format-Table
上使用 -Wrap
,需要在控制台上正确显示多行 strings
。
您可以使用的另一个选项是 Out-String
,认为它还需要使用 .TrimEnd()
方法来删除尾随的新行:
Members = ((Get-ADGroupMember -Identity $Group).Name | Out-String).TrimEnd()
到目前为止我有一些代码,但我希望它能产生一个 table 每个组的用户有多行。
目前,它创建了一个像这样的 table:
Group | Users |
---|---|
abcgroup1 | Alice |
abcgroup1 | Bob |
abcgroup2 | Bob |
abcgroup2 | Jason |
abcgroup3 | Eve |
我希望它能像这样创建一个 table:
Group | Users |
---|---|
abcgroup1 | Alice Bob |
abcgroup2 | Bob Jason |
abcgroup3 | Eve |
$Groups = get-adgroup -Filter 'name -like "*abc*"'
$Results = foreach( $Group in $Groups ){
Get-ADGroupMember -Identity $Group | foreach {
[pscustomobject]@{
Group = $Group.Name
Users = $_.Name
}
}
}
$Results
$Results | Export-Csv C:\abc_search.txt -NoTypeInformation
您可以使用 -join
运算符连接 CRLF `r`n
。这将导致多行 string
:
$Groups = Get-ADGroup -Filter "name -like '*abc*'"
$Results = foreach($Group in $Groups)
{
[pscustomobject]@{
Group = $Group.Name
Members = (Get-ADGroupMember -Identity $Group).Name -join "`r`n"
}
}
$Results | Format-Table -Wrap -Autosize
$Results | Export-Csv C:\abc_search.csv -NoTypeInformation
请注意,我在 Format-Table
上使用 -Wrap
,需要在控制台上正确显示多行 strings
。
您可以使用的另一个选项是 Out-String
,认为它还需要使用 .TrimEnd()
方法来删除尾随的新行:
Members = ((Get-ADGroupMember -Identity $Group).Name | Out-String).TrimEnd()