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

Vbscript-编辑AD用户时拒绝访问,vbscript,active-directory,Vbscript,Active Directory,我正在尝试编写一个使用管理员凭据连接到Active Directory的脚本。然后在整个域中搜索特定用户名,然后更新该用户的属性。我写了一个脚本,我认为应该可以工作,但我得到了“拒绝访问”的错误,够奇怪的了 这是脚本,我把它分成了几个部分。因为它应该通过SuperOffice运行,SuperOffice有自己独特的环境 Dim strUser, rootDSE, adoConnection, ldapStr, adoRecord, objUser updateUser() Public Su

我正在尝试编写一个使用管理员凭据连接到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
Dim strUser、rootDSE、adoConnection、ldapStr、adoRecord、objUser
updateUser()
公共子更新程序()
ADUsername=“john.doe”
createADConnection()
如果userExistsInAD(ADUsername)=False,则
出口接头
如果结束
objUser.Put“说明”、“测试”
objUser.SetInfo
端接头
公共子createADConnection()
设置rootDSE=GetObject(“LDAP://rootDSE”)
设置adoConnection=CreateObject(“ADODB.Connection”)
adoConnection.Provider=“ADSDSOObject”
adoConnection.Properties(“用户ID”)=“mydomain\administrator”
adoConnection.Properties(“密码”)=“8g773ggj024g”
adoConnection.Properties(“加密密码”)=True
adoConnection.Properties(“ADSI标志”)=ADS\u服务器\u绑定或ADS\u安全\u身份验证
adoConnection。打开“Active Directory提供程序”
端接头
公共函数userExistsInAD(ByVal strUser)
ldapStr=“;(&(objectCategory=Person)(objectClass=User)(samAccountName=“&strUser&”);adspath;子树”
设置adoRecord=adoConnection.Execute(ldapStr)
如果不是adoRecord.EOF,则
userExistsInAD=True
退出功能
如果结束
userExistsInAD=False
端函数

在我看来,您运行SuperOffice的帐户没有域管理员凭据。您是否尝试过直接使用您的帐户运行它?

您好!是的,如果我使用管理员帐户手动运行脚本,它就会工作。但它需要从上级办公室运行。这就是为什么我想直接在脚本中添加用户名和密码。我知道这不是个好主意。我需要以某种方式从服务或其他地方运行实际更新。我得仔细研究一下才能找到最好的解决办法:)