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()