Aniruddha
Aniruddha

Reputation: 1039

How to fetch Get-ADPrincipalGroupMembership name in proper format?

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

Answers (3)

Mark Wragg
Mark Wragg

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

Aniruddha
Aniruddha

Reputation: 1039

get-aduser -property * -filter * | select-object @{Label = "Member Of";Expression = {%{Get-ADPrincipalGroupMembership -Identity $.SamAccountName |foreach-Object {$.name}}}}

Upvotes: 0

Ansgar Wiechers
Ansgar Wiechers

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

Related Questions