Vbscript-编辑AD用户时拒绝访问
我正在尝试编写一个使用管理员凭据连接到Active Directory的脚本。然后在整个域中搜索特定用户名,然后更新该用户的属性。我写了一个脚本,我认为应该可以工作,但我得到了“拒绝访问”的错误,够奇怪的了 这是脚本,我把它分成了几个部分。因为它应该通过SuperOffice运行,SuperOffice有自己独特的环境Vbscript-编辑AD用户时拒绝访问,vbscript,active-directory,Vbscript,Active Directory,我正在尝试编写一个使用管理员凭据连接到Active Directory的脚本。然后在整个域中搜索特定用户名,然后更新该用户的属性。我写了一个脚本,我认为应该可以工作,但我得到了“拒绝访问”的错误,够奇怪的了 这是脚本,我把它分成了几个部分。因为它应该通过SuperOffice运行,SuperOffice有自己独特的环境 Dim strUser, rootDSE, adoConnection, ldapStr, adoRecord, objUser updateUser() Public Su
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的帐户没有域管理员凭据。您是否尝试过直接使用您的帐户运行它?您好!是的,如果我使用管理员帐户手动运行脚本,它就会工作。但它需要从上级办公室运行。这就是为什么我想直接在脚本中添加用户名和密码。我知道这不是个好主意。我需要以某种方式从服务或其他地方运行实际更新。我得仔细研究一下才能找到最好的解决办法:)