错误'预期结束声明'在Active Directory VBS搜索脚本的第1行中

时间:2017-11-02 12:36:58

标签: vbscript active-directory syntax-error

我试图运行此问题中找到的Active Directory搜索VBS代码(已接受答案):Get First & Last Name of All AD Accounts,但是当我运行它时,我收到错误消息"预期结束声明",引用第1行,第15个字符。

enter image description here

我无法弄清楚我做错了什么,因为第1行的第15个字母是#34; A"在字符串" As New":

Dim listNames As New AutoCompleteStringCollection

Using ADSearch As New DirectoryServices.DirectorySearcher(ADEntry, "(&(objectCategory=person)(objectClass=user))", {"givenName", "sn"}, DirectoryServices.SearchScope.Subtree)
    For Each user As DirectoryServices.SearchResult In ADSearch.FindAll
        Try
            listNames.Add(user.GetDirectoryEntry.Properties("givenName").Value.ToString + " " + user.GetDirectoryEntry.Properties("sn").Value.ToString)
        Catch ex As Exception

        End Try

    Next
End Using

With TextBox1
    .AutoCompleteCustomSource = listNames
    .AutoCompleteMode = AutoCompleteMode.SuggestAppend
    .AutoCompleteSource = AutoCompleteSource.CustomSource
End With

我尝试在上面的代码前加一行:

Set objShell = CreateObject("WScript.Shell")

但是,这只是将错误消息更改为"预期的语句结束",在第2行,字符15,而不是第1行,这意味着它仍然发生在同一个地方。

我在Windows 7专业工作站上运行此代码并使用Active Directory 2012 R2。

1 个答案:

答案 0 :(得分:3)

您发布的代码段不是VBScript,如果您尝试使用Windows Scripting Host运行它,它将失败。

您收到的错误

  

预期声明结束

您怀疑

As关键字有关。原因是VBScript是无类型的,并且不支持强类型变量,所以不知道As是什么或者用它做什么。代码看起来更像而不是,这可能是问题所在。

请参阅VBScript Data Types (这是一个有用的资源)

  

VBScript只有一种名为Variant的数据类型。 Variant是一种特殊类型的数据类型,可以包含不同类型的信息,具体取决于它的使用方式。因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数返回的数据类型。