Quando você canalizar uma lista para Out-File -Append
, ela gravará cada entrada em uma nova linha.
Em vez disso, crie uma string a partir dos dois valores e canalize isso:
$MemberLine = '"{0}","{1}"' -f $Item.CN,$Name
$MemberLine | Out-File $OutPutFile -encoding ASCII -append
Como alternativa, use Export-Csv
, ele cuidará da separação dos valores por vírgula corretamente:
$Members = foreach ($Result in $Results)
{
$Item = $Result.Properties
foreach ($Member in $Item.member)
{
Get-ADUser "$Member" -Properties DisplayName |Select @{Name='Group';Expression={$Item.CN}},@{Name='Member',Expression={$_.displayname}}
}
}
$Members | Export-Csv $OutPutFile -Encoding ASCII -NoTypeInformation
Como já foi mencionado, você pode substituir seu [adsisearcher]
pelo cmdlet Get-ADGroup
, muito mais conciso:
$Groups = Get-ADGroup -Filter {GroupCategory -eq 'Distribution'}
$Groups | ForEach-Object {
$Group = $_
$Group.Member |ForEach-Object {
Get-ADUser $_ -Properties displayName
} | Select @{N='Group';E={$Group.Name}},@{N='Member';E={$_.displayName}}
} | Export-Csv $OutPutFile -Encoding ASCII -NoTypeInformation