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年10月
« 9月    
1234567
891011121314
15161718192021
22232425262728
293031  
ページ上部へ戻る