最近,我们将一些脚本从32位Windows 2008服务器移至新的Windows2008服务器R2 64位计算机。现在我们遇到了一些问题,一些VB脚本。让我们以这个为例:
Set objcon = CreateObject("ADODB.Connection")
Set objrs = CreateObject("ADODB.Recordset")
Set objcom = CreateObject("ADODB.command")
Set objrootdse = GetObject("LDAP://RootDse")
strDN = "GC://" & objrootdse.Get("rootDomainNamingContext")
objcon.Provider = "ADsDSOObject"
objcon.Open "ADS Provider"
Set objcom.ActiveConnection = objcon
objcom.Properties("Page Size") = 10000
objcom.CommandText = "<" & strDN & ">;" & strFilter & ";adspath;subtree"
Set objrs = objcom.Execute
if objrs.eof and objrs.bof then //<-- fails here
...
当我运行此脚本时,它会失败,例外情况是:“搜索筛选器无法识别”,尽管它在32位计算机上运行良好。新服务器只安装了web角色和文件服务角色。当涉及到ADsDSOObject提供程序时,似乎总是会出现一些麻烦。LDAP搜索筛选器是可以的。
编辑:我还尝试运行SysWow64版本的cmd.exe和cscript.exe,结果相同。
编辑2:尝试了更多的东西。结果,该方法是正确的,当它遇到像“(&(name=)(objectClass=computer)”这样的过滤器时会失败,这是无效的,因为名称在LDAP字符串中不能是空的。有趣的是,另一台服务器似乎忽略了这个错误,只是继续前进。
发布于 2012-04-22 16:54:47
我解决了这个问题:由于某种原因,nwe服务器上的Vbscript在遇到无效的LDAP过滤器时退出。它从来没有在旧的服务器上这样做,所以我想在win 2008 r2中处理这些错误的方式会有所改变。
发布于 2012-04-20 09:58:59
尝试使用位于%windir%\SysWOW64 64目录中的wscript.exe或cscript.exe版本运行脚本
https://serverfault.com/questions/381471
复制相似问题