有没有办法使用VBScript一次导出所有多个Active Directory组的成员?优选地,输出将是他们所属的组下列出的用户名。
我有以下内容允许我一次导出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
有什么想法吗?
答案 0 :(得分:4)
是的,这是可能的,但我认为你可能需要稍微改变一下你的方法。您需要编写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查询有点了解
答案 1 :(得分:0)
查找Active Directory脚本的最佳位置是Microsoft的脚本中心Repository。
您可以找到一个脚本,列出所有群组和所有群组成员here(“列出域中的所有群组以及群组的所有成员”)。