2012-04-24 10 views
1

私のサーバーがグループに属していることを検証するためのスクリプトを作成しています。 PowerShellのコードで開始...ADグループオブジェクトにメンバープロパティがありません

$root = [ADSI]'GC://dc=xx,dc=yyy,dc=zzz' 
$searcher = new-object System.DirectoryServices.DirectorySearcher($root) 
$searcher.filter = "(&(objectClass=Group)(Name=$groupName))" 
$groups = $searcher.findall() 
$group = $groups[0] 

これは、変数$グループにActive Directoryグループを返します。時間の半分、この変数には、グループ内のすべてのサーバーを含む 'member'という名前のプロパティがあります。もう半分の時間は、そのプロパティは返されません。ユーザー、ログオンADSサーバーなどのためにパターンを見つけることができません。誰もこの現象に遭遇しましたか?

答えて

1

グローバルカタログを照会しています。グローバルカタログ( 部分属性セットとも呼ばれます)には、すべての属性のサブタイプが のみ含まれています。ユニバーサルグループの場合のみ、メンバーのプロパティはグローバルカタログで使用できることが保証されています。照会しているグローバルカタログと同じドメインにないドメインローカルおよびグローバルグループのメンバシップ情報は利用できません。

メンバー属性に値が含まれていない場合は、グローバルカタログがクエリするグループと同じドメインにあっても、メンバー属性は使用できません。

+0

説明していただきありがとうございます。グローバルマシングループは、スクリプトを実行しているユーザーとコンピュータと同じドメインにありますので、問題ではありません。メンバー属性に80を超えるサーバーが設定され、一部のユーザーには表示されます。 – plattitude

1

メンバーの属性はグローバルカタログにはレプリケートされないため、グローバルカタログを対象にグループメンバシップを列挙しようとすると、有効な結果を得る。ユニバーサルセキュリティグループのメンバーシップを照会する場合は、そのメンバーシップがすべてのグローバルカタログに登録されるため、結果を返すことができます。

はまた、注意の一言グループメンバーシップを列挙する - そうでない場合は無限に実行されているスクリプトの可能性がある、彼らはネストされたメンバーシップに円形のループを検出することができることを確認するために、スクリプトをテストすることは常に良いです。

一般的に、グループメンバシップを列挙するには、ターゲットドメイン内のドメインコントローラにバインドする必要があります。

関連する問題