0

管理者の資格情報を使用して Active Directory に接続するスクリプトを作成しようとしています。次に、ドメイン全体で特定のユーザー名を検索し、そのユーザーのプロパティを更新します。動作するはずのスクリプトを作成しましたが、奇妙なことに「アクセスが拒否されました」というエラーが表示されます。

セクションに分けたスクリプトを次に示します。独自の環境を持つ 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
4

1 に答える 1

1

SuperOffice を実行しているアカウントには、ドメイン管理者の資格情報がないように思えます。アカウントで直接実行してみましたか?

于 2013-01-07T11:25:47.137 に答える