我试图运行此问题中找到的Active Directory搜索VBS代码(已接受答案):Get First & Last Name of All AD Accounts,但是当我运行它时,我收到错误消息"预期结束声明",引用第1行,第15个字符。
我无法弄清楚我做错了什么,因为第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。
答案 0 :(得分:3)
您发布的代码段不是VBScript,如果您尝试使用Windows Scripting Host运行它,它将失败。
您收到的错误
您怀疑预期声明结束
与As
关键字有关。原因是VBScript是无类型的,并且不支持强类型变量,所以不知道As
是什么或者用它做什么。代码看起来更像vb.net而不是vbscript,这可能是问题所在。
请参阅VBScript Data Types (这是一个有用的资源)
VBScript只有一种名为Variant的数据类型。 Variant是一种特殊类型的数据类型,可以包含不同类型的信息,具体取决于它的使用方式。因为Variant是VBScript中唯一的数据类型,所以它也是VBScript中所有函数返回的数据类型。