Reputation: 1039
My PowerShell script goes like this:
Get-ADUser -Property * -filter * | Select-Object @{Label="Member Of";Expression={
%{Get-ADPrincipalGroupMembership -Identity $_.SamAccountName | Select-Object name}
}}
Output:
Member Of --------- {@{name=XYZUsers}, @{name=GLOBAL_XYZ}, @{name=LOCAL_XYZ}, @{name=ABC_APPROVER} {@{name=XYZUsers}, @{name=GLOBAL_XYZ}, @{name=LOCAL_XYZ}, @{name=ABC_APPROVER}
Where as I want output to be like this:
Member Of --------- XYZUsers, GLOBAL_XYZ, LOCAL_XYZ XYZUsers, GLOBAL_XYZ, LOCAL_XYZ
Upvotes: 0
Views: 3439
Reputation: 23425
I think the -ExpandProperty
parameter of Select-Object
may be what you need.
Try this:
Get-ADUser -property * -filter * | select-object @{Label = "Member Of";Expression = {%{Get-ADPrincipalGroupMembership -Identity $_.SamAccountName | Select-Object -ExpandProperty name}}}
Alternatively I think you could also potentially simplify your code to this, but I don't have anywhere to test it right now:
Get-ADUser -property * -filter * | % {Get-ADPrincipalGroupMembership -Identity $_.SamAccountName | Select-Object name}
Upvotes: 1
Reputation: 1039
get-aduser -property * -filter * | select-object @{Label = "Member Of";Expression = {%{Get-ADPrincipalGroupMembership -Identity $.SamAccountName |foreach-Object {$.name}}}}
Upvotes: 0
Reputation: 200573
Your Select-Object
statements gives you custom objects with a property name
(@{name=...}
). You need to extract the value of this property (e.g. via the -ExpandProperty
parameter of Select-Object
) and then join the extracted group names to a string:
Get-ADUser -Property * -Filter * | Select-Object @{n='Member Of';e={
(Get-ADPrincipalGroupMembership -Identity $_.SamAccountName |
Select-Object -Expand Name) -join ', '
}}
Upvotes: 1