PowerShell嵌套ForEach循环以获取AD子组

时间:2016-10-12 09:41:12

标签: powershell for-loop active-directory

我一直在试用一个脚本来让AD组和组内的组成为AD用户。 该脚本无法有效地找到组中的组,我必须使用多个foreach循环。 是否可以使这个命令更有效/更小而不是使用foreach循环?

function GetADSubGroups ($object)
{
    Get-ADPrincipalGroupMembership $object | ForEach {
        $_
        Get-ADPrincipalGroupMembership $_ | ForEach {
        $_
        Get-ADPrincipalGroupMembership $_ | ForEach {
        $_
        Get-ADPrincipalGroupMembership $_ 
       }
    }
}
} 

GetADSubGroups 'testuser' | select name

1 个答案:

答案 0 :(得分:1)

您可以使用while循环来消除所有foreach循环。同时删除Select cmdlet并使用点表示法。所有这一切都应该加快25%左右。

$groups = Get-ADPrincipalGroupMembership 'testuser'
$allGroups =$null

While($groups){
    $allGroups += $groups.Name
    $groups = $groups.Name | Get-ADPrincipalGroupMembership   
}

$allGroups