VBScript для экспорта всех членов нескольких групп Active Directory? - PullRequest
0 голосов
/ 04 июля 2011

Существует ли способ экспорта всех членов нескольких групп Active Directory одновременно с использованием VBScript? Предпочтительно, чтобы на выходе были имена пользователей, перечисленные в группе, членом которой они являются.

У меня есть следующее, что позволяет мне экспортировать членов 1 группы AD одновременно, но я не знаю, как изменить его, чтобы просматривать несколько групп.

On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set outfile = fso.CreateTextFile("Members.csv")
Set objGroup = GetObject("LDAP://cn=*GROUPNAME*,OU=Groups,DC=domain,DC=local")
objGroup.GetInfo

arrMembersOf = objGroup.GetEx("member")

For Each GetObject in ObjGroup
    outfile.WriteLine objGroup.Name
Next

For Each strMember in arrMembersOf
    outfile.WriteLine strMember
Next

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Да, это возможно, но я думаю, что вам, возможно, придется немного изменить свой подход. Вам нужно написать запрос LDAP для запроса двух групп одновременно, а не просто установить область действия для определенной группы.

Итак, попробуйте переработать ваш скрипт следующим образом:

  Set objRootDSE = GetObject("LDAP://RootDSE")
    strDNSDomain = objRootDSE.Get("defaultNamingContext")
  Set objRootDSE = Nothing
  Set ad = CreateObject("ADODB.Command")
  Set adoConnection = CreateObject("ADODB.Connection")
    adoConnection.Provider = "ADsDSOObject"
    adoConnection.Open "Active Directory Provider"
    ad.ActiveConnection = adoConnection

'Put the distinguishedname of your two groups here:
strFilter = "(|(memberof=CN=Group Name,OU=....)(memberof=CN=Group Name 2,OU=....))"

'Chose what you want to return here:
strAttributes = "samaccountname,cn"

strQuery = "<LDAP://" & strDNSDomain & ">" & ";" & strFilter & ";" & strAttributes & ";subtree"

  ad.CommandText = strQuery
  ad.Properties("SearchScope") = 2 
  ad.Properties("Page Size") = 1000
  ad.Properties("Cache Results") = False
Set objRS = ad.Execute

Теперь у вас есть все результаты в наборе записей, вы можете пройтись по ним, записывая каждый в файл или что угодно, что вы хотите сделать. Так что-то вроде:

Do Until objRS.EOF


   'Do something with each value
   objRS.Fields("samaccountname")

objRS.MoveNext
Loop

Любое использование? Я предполагаю, что здесь вы знаете немного о написании запросов LDAP

0 голосов
/ 04 июля 2011

Лучшее место для поиска сценариев для Active Directory - это Центр сценариев Microsoft Репозиторий .

Здесь вы можете найти сценарий со списком всех групп и всех членов группы здесь («Список всех групп в домене и всех членов групп»).

...