1

サーバーがグループに属していることを検証するスクリプトを作成します。PowerShellコードから始めます...

$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]

これにより、変数$groupにActiveDirectoryグループが返されます。半分の時間、この変数には、グループ内のすべてのサーバーを含む「member」というタイトルのプロパティがあります。残りの半分の時間、そのプロパティは返されません。ユーザー、ログオンADSサーバーなどが原因でパターンが見つかりません。誰かがこの動作に遭遇しましたか?

4

2 に答える 2

1

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

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

于 2012-04-24T19:53:46.053 に答える
1

I think the point Jon was trying to make is that the member attribute is not replicated to the global catalog, so if you're trying to enumerate group memberships by targeting a global catalog, you're not going to get valid results. The only time you'll get results back is if you're querying the membership of a universal security group, as its membership will be on all Global Catalogs.

Also, one word of caution when enumerating group memberships - it is always good to test your scripts to make sure that they can detect circular loops in nested memberships, otherwise there exists the possibility of the scripts running infinitely.

In general, to enumerate group memberships, you should bind to a domain controller in the target domain.

于 2013-01-17T01:22:44.230 に答える