2016-10-12 2 views
1

AD 사용자 및 그룹 내의 그룹을 AD 그룹 및 그룹 내에서 가져 오기 위해 스크립트를 테스트했습니다. 그룹 내의 그룹을 찾는 스크립트가 효과적이지 않습니다. group 나는 여러 개의 foreach 루프를 사용해야 만했다. foreach 루프를 사용하는 것보다이 명령을 더 효율적으로 만들 수 있습니까?PowerShell 중첩 된 ForEach 루프에서 AD 하위 그룹 가져 오기

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

GetADSubGroups 'testuser' | select name 

답변

1

while 루프를 사용하여 모든 foreach 루프를 제거 할 수 있습니다. 또한 Select cmdlet을 제거하고 도트 표기법을 대신 사용하십시오. 이 모든 것이 속도를 25 % 정도 높여야합니다.

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

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

$allGroups 
+0

감사합니다. – Ralluhb

관련 문제