0
我正在嘗試編寫使用管理員憑據連接到Active Directory的腳本。然後在整個域中搜索特定的用戶名,然後更新該用戶的屬性。我寫了一個我認爲應該可以工作的腳本,但我得到了「訪問被拒絕」的錯誤,足夠奇怪了。Vbscript - 編輯AD用戶時拒絕訪問用戶
下面是我已經放入章節的腳本。因爲它應該通過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
嗨!是的,如果我使用管理員帳戶手動運行腳本,它就可以工作。但它需要從SuperOffice運行。這就是爲什麼我想直接在腳本中添加用戶名和密碼。我知道這不是一個好主意。我需要以某種方式從服務或其他東西運行實際的更新。我將不得不挖掘一下找到最好的解決方案:) –