列出特定组的用户

时间:2011-03-14 11:52:51

标签: vbscript active-directory arraylist report

早上好,

我正在寻找我的直线经理。我需要修改现有的VBScript,从AD(商业,财务,人力资源,IT,营销,运营和财产)中的特定群体中吸引用户:

Const ForReading = 1,ForWriting = 2,ForAppending = 8
StartFilename = "AD groups.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(StartFilename,ForAppending, True)

strDomainName = inputbox("Enter Domain Name","AD Billing","") 

Set objDomain = GetObject("WinNT://" & strDomainName)

For each objDomainObject in objDomain
If objDomainObject.class = "Group" Then
Set objGroup = GetObject("WinNT://"& strDomainName & "/" & objDomainObject.Name)
objTextFile.writeline("")
objTextFile.writeline("Domain: " & strDomainName & "   Group: " & objDomainObject.Name)
objTextFile.writeline("")
Set objMemberList = objGroup.Members
For Each objGroupMember In objMemberList
Set objMember = objGroupMember
objTextFile.writeline ("Group member: " & objMember.Name)
Next
End If
Next
objTextFile.close

任何帮助都非常适合 亲切的问候

贾斯汀

2 个答案:

答案 0 :(得分:0)

只需在If之后添加另一个If,您会发现它是Group,但不是在class上进行比较,而是在“名称”上进行比较。 / p>

所以修改原始代码会是这样的:

Const ForReading = 1,ForWriting = 2,ForAppending = 8
StartFilename = "AD groups.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(StartFilename,ForAppending, True)

strDomainName = inputbox("Enter Domain Name","AD Billing","") 
strGroupName =  inputbox("Enter Group Name","AD Billing","") 

Set objDomain = GetObject("WinNT://" & strDomainName)

For each objDomainObject in objDomain
    If objDomainObject.class = "Group" Then
        If objDomainObject.Name = strGroupName Then
            Set objGroup = GetObject("WinNT://"& strDomainName & "/" & objDomainObject.Name)
            objTextFile.writeline("")
            objTextFile.writeline("Domain: " & strDomainName & "   Group: " & objDomainObject.Name)
            objTextFile.writeline("")
            Set objMemberList = objGroup.Members
            For Each objGroupMember In objMemberList
                Set objMember = objGroupMember
                objTextFile.writeline ("Group member: " & objMember.Name)
            Next
        End If
    End If
Next
objTextFile.close

我认为您希望每次使用InputBox询问哪个组,否则您可以将If语句中的这些值硬编码为
If objDomainObject.Name = "Commercial" Or objDomainObject.Name = "Finance" Or .... Then

答案 1 :(得分:0)

您在下一个语句上面忽略了这一点(在容器/ OU中后重新枚举对象。):

If objDomainObject.Class = "organizationalUnit" Or 
   objDomainObject.Class = "container" Then
        enumMembers (objMember)
End If