ADグループのメンバーを大量に取得する方法

08.07

 

Get-ADGroupMember はメンバー数が多くなるとオーバーフローしてエラーとなります。

そのためメンバーが多いグループがある組織の管理者はグループメンバーは LDAP から取得します。

ついでに、グループの下にグループがある場合、そのメンバーも取得したいことが多くあるかと思います。

例えば、グループAにユーザーBが所属している調べたいなどといった要望の際に有効となります。

そんな時は以下のスクリプトが有効です。

# 以下でグループのメンバーのSamAccountNameを取得

$s = GroupのDistinguishedName

$group =[adsi]”LDAP://$s”

$members = $group.psbase.invoke(“Members”) | foreach {$_.GetType().InvokeMember(“SamAccountName”,’GetProperty’,$null,$_,$null)}

#  $members  を展開してユーザーであれば $User に追加。グループであれば $Group に追加。

$members | % {

$ObjectClass = $null

$ObjectClass = Get-ADObject -Filter {SamAccountName -eq “$_”} -Properties ObjectClass

if($ObjectClass.ObjectClass -eq “user”)

{

$User += $_

}

else

{

if($ObjectClass.ObjectClass -eq “group”)

{

$Group += $_

}}}

$Group の中身を取り出して再度展開させればそのメンバーを取得することが可能です。

面倒なので関数化して、数回繰り返せば階層が深くてもすべてのメンバーを取得することが可能です。

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

2018年12月
« 11月    
 12
3456789
10111213141516
17181920212223
24252627282930
31  
ページ上部へ戻る