如何使用VBScript从Active Directory获取部门信息?

时间:2018-09-21 09:24:44

标签: vbscript

我不是任何类型的脚本编写者,只是试图获取某些域信息的网络专家。

我有一个包含多个OU的域,和通常一样,多个安全组。我试图根据其是域中特定安全组的成员来填充AD中用户帐户的“部门:”字段(在“组织”选项卡下)。

我使用的代码在这里:

{
On Error Resume Next

Set objGroup = GetObject _
    ("LDAP://CN=LiveTimeCustomers,OU=Service Accounts,DC=domain,DC=com", group)
' WScript.Echo objGroup.Name

For Each objMember In objGroup.Members
    ' WScript.Echo vbCrlf & "    Name: " & objMember.Name
    arrGroups = objMember.GetEx("memberOf")
    If (Err.Number = 0) Then
        On Error GoTo 0 
          strGroups = LCase(Join(arrGroups))
' Update Department attribute for COMMUNITY SECTION members           

        If InStr(strGroups, "cn=community section,ou=community,ou=organisation,dc=domain,dc=com") Then 
            ' WScript.Echo vbCrlf & "    Name: " & objMember.Name & " is member of COMMUNITY SECTION"
            Set objUser = GetObject(objMember.ADsPath)
            objUser.department = "COMMUNITY SECTION"
            objUser.SetInfo
        End If

}

运行时出现的错误是:

  

行:23字符:5在高速缓存中找不到目录属性。   线条和字符是指此:arrGroups = objMember.GetEx(“ memberOf”)

2 个答案:

答案 0 :(得分:0)

我无法在此装备上测试广告素材。但是,正如我在此答案中所述:Reading next line from data file VB Script,此samples library可能会对您有所帮助。

您将看到的顶级类别是“ Active Directory ”。 Could this particular script help

我将内联脚本示例以供参考:

' List All the Members of a Group
On Error Resume Next

Set objGroup = GetObject _
  ("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.GetInfo

arrMemberOf = objGroup.GetEx("member")

WScript.Echo "Members:"
For Each strMember in arrMemberOf
    WScript.echo strMember
Next

答案 1 :(得分:0)

答案不是在vbscript中做!无论如何,谢谢您的帮助。 在建议将此脚本更新为Powershell之后,我做到了。我需要运行“启动”脚本来以管理员身份运行PS,然后调用要用于编辑AD的脚本。

启动脚本: Start-Process powershell '-NoProfile -File \\domain.com\SYSVOL\domain.com\scripts\SetDepartmentAttribute.ps1' -verb RunAs

Active Directory代码:

    `Import-Module ActiveDirectory

Get-ADGroupMember -Identity "COMMUNITY"| Set-ADUser -Replace @{Department="COMMUNITY"}`

所有这些都为您提供了关于DC的执行策略,以允许运行脚本-进行检查。