2017-01-11 24 views
0

我的PowerShell脚本是这样的:如何以适当的格式获取Get-ADPrincipalGroupMembership名称?

Get-ADUser -Property * -filter * | Select-Object @{Label="Member Of";Expression={ 
    %{Get-ADPrincipalGroupMembership -Identity $_.SamAccountName | Select-Object name} 
}} 

输出:

Member Of 
--------- 
{@{name=XYZUsers}, @{name=GLOBAL_XYZ}, @{name=LOCAL_XYZ}, @{name=ABC_APPROVER} 
{@{name=XYZUsers}, @{name=GLOBAL_XYZ}, @{name=LOCAL_XYZ}, @{name=ABC_APPROVER}

在哪里,我想输出是这样的:

Member Of 
--------- 
XYZUsers, GLOBAL_XYZ, LOCAL_XYZ 
XYZUsers, GLOBAL_XYZ, LOCAL_XYZ

回答

1

我想选择的-ExpandProperty参数对象可能是你需要的。试试这个:

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

另外我想你也可能会简化你的代码,但我没有地方,现在来测试它:

get-aduser -property * -filter * | % {Get-ADPrincipalGroupMembership -Identity $_.SamAccountName | Select-Object name} 
1

Select-Object语句让你自定义对象与财产name@{name=...})。你需要(例如通过的Select-Object-ExpandProperty参数)提取此属性的值,然后加入提取组名的字符串:

Get-ADUser -Property * -Filter * | Select-Object @{n='Member Of';e={ 
    (Get-ADPrincipalGroupMembership -Identity $_.SamAccountName | 
    Select-Object -Expand Name) -join ', ' 
}} 
0

GET-ADUser便有-property * -filter * | select-object @ {Label =“Member Of”; Expression = {%{Get-ADPrincipalGroupMembership -Identity $ .SamAccountName | foreach-Object {$.name}}}}