2016-10-12 13 views
1

ADグループとグループ内のグループをADユーザーに取得するためのスクリプトを試しています。 グループ内のグループを見つけるのに効果的ではありませんグループ私は複数の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コマンドレットを使用し、ドット表記を使用してください。これらのすべてが、約25%のスピードアップにつながるはずです。

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

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

$allGroups 
+0

ありがとうございました – Ralluhb

関連する問題