Vbscript - 编辑AD用户时拒绝访问

时间:2012-12-07 07:18:46

标签: vbscript active-directory

我正在尝试使用管理员凭据编写连接到Active Directory的脚本。然后在整个域中搜索特定用户名,然后更新该用户的属性。我写了一个我认为应该有用的脚本,但是我得到了“拒绝访问”的错误,很奇怪。

这是脚本,我已将其放入各个部分。因为它应该通过SuperOffice运行,SuperOffice拥有自己独特的环境。

Dim strUser, rootDSE, adoConnection, ldapStr, adoRecord, objUser

updateUser()

Public Sub updateUser()
    ADUsername = "john.doe"

    createADConnection()

    If userExistsInAD(ADUsername) = False Then
        Exit Sub
    End if

    objUser.Put "description", "testing"
    objUser.SetInfo
End Sub

Public Sub createADConnection()
    Set rootDSE = GetObject("LDAP://RootDSE")
    Set adoConnection = CreateObject("ADODB.Connection")
    adoConnection.Provider = "ADSDSOObject"
    adoConnection.Properties("User ID") = "mydomain\administrator"
    adoConnection.Properties("Password") = "8g773ggj024g"
    adoConnection.Properties("Encrypt Password") = True
    adoConnection.Properties("ADSI Flag") = ADS_SERVER_BIND Or ADS_SECURE_AUTHENTICATION
    adoConnection.Open "Active Directory Provider"
End Sub

Public Function userExistsInAD(ByVal strUser)
    ldapStr = "<LDAP://" & rootDSE.Get("defaultNamingContext") & ">;(&(objectCategory=Person)(objectClass=User)(samAccountName=" & strUser & "));adspath;subtree"
    Set adoRecord = adoConnection.Execute(ldapStr)
        If Not adoRecord.EOF Then
        userExistsInAD = True
        Exit Function
    End if

    userExistsInAD = False
End Function

1 个答案:

答案 0 :(得分:1)

听起来像您运行SuperOffice的帐户没有域管理员凭据。您是否尝试直接使用自己的帐户运行它?

相关问题