2017-11-29 19 views
0

ldapに対してこのような問い合わせを行う方法が新しくなりました。LDAP_MATCHING_RULE_IN_CHAIN( "member:1.2.840.113556.1.4.1941:=。私は情報で検索しましたLDAPを使用してネストされた特定のユーザーのアクティブなディレクトリグループを取得します。

...、私はそれを使用する方法について混乱しています。

私は、ユーザーがメンバーであるすべてのグループを取得しようとしているVBスニペット、ダイレクトを持っています

私は不確かなことがいくつかあります。

  1. 私はADのルートにベースを設定しました、それは正しいですか?
  2. 結果を取得するためにObjectCategoryとobjectClassを指定する必要がありますか、返された結果セットを絞り込むために「ちょうど」使用されますか?
  3. LDAP_MATCHING_RULE_IN_CHAIN( "memberOf:1.2.840.113556.1.4.1941:=グループへの参照を追加するためのさまざまな提案がありますが、ここでのポイントはグループのリストを取得することです。任意の参照。グループにこのフィルタを動作させるために?

私はADにおけるCNのユーザー「ADユーザー」を探していますが、私は同じ結果(何も)

を持つ他のユーザーを試してみました

誰でも私がここで間違っているのを見ていますか?

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
 

 
     Dim adoCommand, adoConnection, strBase, strFilter, strAttributes 
 
     Dim objRootDSE, strDNSDomain, strQuery, adoRecordset, strName, strCN 
 

 
     ' Setup ADO objects. 
 
     adoCommand = CreateObject("ADODB.Command") 
 
     adoConnection = CreateObject("ADODB.Connection") 
 
     adoConnection.Provider = "ADsDSOObject" 
 
     adoConnection.Open("Active Directory Provider") 
 
     adoCommand.ActiveConnection = adoConnection 
 

 
     ' Search entire Active Directory domain. 
 
     objRootDSE = GetObject("LDAP://RootDSE") 
 

 
     strDNSDomain = objRootDSE.Get("defaultNamingContext") 
 
     strBase = "<LDAP://" & strDNSDomain & ">" 
 

 
     ' Filter on user objects. 
 
     'strFilter = "(&(objectCategory=Person)(objectClass=user)" 
 

 
     strFilter = "(&(objectCategory=Group)" 
 
     strFilter = strFilter & "(member:1.2.840.113556.1.4.1941:=(CN=AD User,DC=hnitservice,DC=local)))" 
 

 
     ' Comma delimited list of attribute values to retrieve. 
 
     strAttributes = "sAMAccountName,cn" 
 

 
     ' Construct the LDAP syntax query. 
 
     strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree" 
 
     adoCommand.CommandText = strQuery 
 
     adoCommand.Properties("Page Size") = 100 
 
     adoCommand.Properties("Timeout") = 30 
 
     adoCommand.Properties("Cache Results") = False 
 

 
     ' Run the query. 
 
     adoRecordset = adoCommand.Execute 
 

 
     ' Enumerate the resulting recordset. 
 
     Do Until adoRecordset.EOF 
 
      ' Retrieve values and display. 
 
      strName = adoRecordset.Fields("sAMAccountName").Value 
 
      strCN = adoRecordset.Fields("cn").value 
 
      ' Wscript.Echo "NT Name: " & strName & ", Common Name: " & strCN 
 
      ' Move to the next record in the recordset. 
 
      adoRecordset.MoveNext 
 
     Loop 
 

 
     ' Clean up. 
 
     adoRecordset.Close 
 
     adoConnection.Close 
 

 
    End Sub

+0

あなたのタイトルは「LDAPを使ってネストされた特定のユーザのアクティブなディレクトリグループを取得してください。 しかし、結果はユーザーがメンバーであるGROUPSになります。 あなたはこう言っています:「私は広告のCNであるユーザー「ADユーザー」を探していますが、同じ結果の他のユーザーを試しました」 グループまたはユーザーを検索していますか? – jwilleke

+0

ユーザーが所属するグループを検索しています。 AD Userは、私がグループを探しているユーザーの名前です。 だから私はユーザー名を入れてグループのリストを取得する必要があります。 – hhaumann

答えて

1

All Groups a User is a member of including Nested Groups

この拡張可能な一致ルールは、多くの場合、= DC、CN =ユーザー名、CN =ユーザー」というすべてのグループを見つけるために、一例として、LDAP_MATCHING_RULE_IN_CHAIN

とYOURDOMAINを参照されDC = NET "のメンバであり、グループコンテナDNにベースを設定します。たとえば、(OU = groupsOU、DC = MyDomain、DC = NET)、およびサブツリーのスコープを指定し、次のフィルタを使用します。

(member:1.2.840.113556.1.4.1941:=(CN=UserName,CN=Users,DC=YOURDOMAIN,DC=NET)) 

ユーザーがネストされたグループを含むすべてのグループを返します。

申し訳ありませんが、私はvb.netを手伝ってはいけませんが、参照を守っていて、baseDNが適切であることを確認する必要があります。

これは便利ではありません。

' Filter on user objects. 
     'strFilter = "(&(objectCategory=Person)(objectClass=user)" 

あなたがグループを返すようにしたいと。

「既知の」優れたユーティリティを使用してクエリを実行し、クエリが機能することを常に確認することをお勧めします。 (私はApache Studioが好きです)

関連する問題