【问题标题】:List users from specific groups列出来自特定组的用户
【发布时间】:2011-07-14 23:12:06
【问题描述】:

大家早上好,

我目前正在报道我的直属经理。我需要修改现有的 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

非常感谢任何帮助 亲切的问候

贾斯汀

【问题讨论】:

    标签: vbscript active-directory arraylist report


    【解决方案1】:

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

    所以修改你的原始代码应该是这样的:

    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

    【讨论】:

      【解决方案2】:

      您在下一条语句上方缺少此内容(在容器/OU 中重新枚举对象。):

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-15
        • 2021-04-07
        • 1970-01-01
        • 1970-01-01
        • 2014-04-03
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        相关资源
        最近更新 更多