1

memberOf プロパティの使用方法に関する例はたくさんありますが、必要な作業スクリプトが見つかりませんでした。ここで私のスクリプトを共有することで、他の人の助けになることを願っています。

以下のスクリプトには、2 つの実用的な例があります。最初の例Set GroupsOfUser = GetMembership(oAD.UserName, null)では、現在ログオンしているユーザーのメンバーシップを取得します。2 番目の例Set GroupsOfGroup = GetMembership("CN=SomeGroup,OU=MyGroupContainer,DC=MyDomain,DC=local", null)は、特定のグループのメンバーシップを示しています。

以下の関数は一意の値を返し、ほとんどの例のように無限ループにはなりません。

4

1 に答える 1

0
'Get the recursive groups from the active user
Set oAD = CreateObject("ADSystemInfo")
Set GroupsOfUser = GetMembership(oAD.UserName, null)
MsgBox Join(GroupsOfUser.Items(), "," & vbCrLf)

'Get the recursive groups from a specific group
Set GroupsOfGroup = GetMembership("CN=SomeGroup,OU=MyGroupContainer,DC=MyDomain,DC=local", null)
MsgBox Join(GroupsOfGroup.Items(), "," & vbCrLf)


Function GetMembership(sChild, dMembership)
  'Get AD info on the given Child
  Set oChild = GetObject("LDAP://" & sChild)

  If TypeName(oChild) = "Object" Then
    'Add the Child's canonical name to the array IF it's a group
    If TypeName(dMembership) = "Dictionary" Then
      dMembership.Add oChild.distinguishedName, oChild.CN
    Else
      Set dMembership = CreateObject("Scripting.Dictionary")
    End If

    'If the Child has any parents (=groups), run the same loop for these parents.
    If TypeName(oChild.memberOf) = "Variant()" Then
      oParents = oChild.GetEx("memberOf")
      For Each sParent in oParents
        If Not dMembership.Exists(sParent) Then
          Set dMembership = GetMembership(sParent, dMembership)
        End If
      Next
    End If
  End If

  Set GetMembership = dMembership
End Function
于 2013-04-03T11:52:21.670 に答える