2012-01-18 5 views
0

私は非常に深いネストされたグループ構造を持つActive Directoryとの組織にいます。私は再帰的にLinuxマシンからグループのユーザーメンバーを見つけるためにディレクトリを照会したいと思います。 Windowsマシンでは、dsgetはディレクトリのクエリに何を使用しますか?

dsget group "dn_of_group" -members -expand 

は、私が望むものを正確に実行します。

(memberOf:1.2.840.113556.1.4.1941:=dn_of_group) 

と同じ結果をLDAPで取得しようとすると、クエリには約1分かかります。 dsget使用LDAPは、ボンネットの下にないか、それがディレクトリを照会するためにいくつかの他の手段を使用していますか?もしそうなら、私もそれを使う方法はありますか?

編集: は、私は、ユーザーであるメンバーが必要であることを明らかにしました。

答えて

0

System.DirectoryServices.AccountManagement名前空間を持つフレームワーク3.5は、再帰的にすべてのグループを検索し、ユーザがメンバーであるグループを返すメソッドを提供します。返されるセットには、システムが認証目的でメンバーとみなす追加のグループも含まれます。

UserPrincipal.GetAuthorizationGroups() 

このメソッドによって返されるグループには、プリンシパルとは異なるスコープおよびストアのグループが含まれる場合があります。プリンシパルのDN有するAD DSオブジェクトである場合、例えば、CN = NormalGroups "CN = SpecialGroups、DC = Fabrikam社、DC = COMは、返されたセットが属するグループを含むことができる"、DC = Fabrikam社、DC =あなたが持っている他の方向でのCOM


GroupPrincipal.GetMembers(bool recursive) 

は、私が他の方向に行く必要がRemarks

+0

を参照してください。私。指定されたグループのすべてのユーザーメンバーを検索し、指定されたユーザーがメンバーであるすべてのグループを検索するわけではありません。 –

+0

私は自分の答えを編集しますが、それはあなたが探していたものですか? – JPBlanc

関連する問題