当ADSIEdit返回正确的行数时,VBScript返回0行

当ADSIEdit返回正确的行数时,VBScript返回0行,vbscript,ldap,adodb,adsi,Vbscript,Ldap,Adodb,Adsi,在过去的两天左右的时间里,我一直在努力解决这个问题,但没有取得多大的成功——不管我做了什么尝试。 当我运行一个查询来检索以特定结尾的共享卷时,我让它在ADSIEdit中正常工作,但在我的VBScript中不能正常工作。非常奇怪,因为我使用的是完全相同的查询 ADSIEdit查询的配置如下: 名称:测试 搜索根目录:DC=ad,DC=server,DC=com 查询字符串:(&(objectCategory=volume)(objectClass=volume)(cn=K_*) 查询范围:子树搜

在过去的两天左右的时间里,我一直在努力解决这个问题,但没有取得多大的成功——不管我做了什么尝试。 当我运行一个查询来检索以特定结尾的共享卷时,我让它在ADSIEdit中正常工作,但在我的VBScript中不能正常工作。非常奇怪,因为我使用的是完全相同的查询

ADSIEdit查询的配置如下:

  • 名称:测试
  • 搜索根目录:DC=ad,DC=server,DC=com
  • 查询字符串:(&(objectCategory=volume)(objectClass=volume)(cn=K_*)
  • 查询范围:子树搜索

    • 搜索结果:11条cn以K开头的记录_
    • VbScript结果:1条记录(!?!?)
如果我将查询字符串改为(最后一部分)(uNCName=*\5cOst gro)),这正是我真正想要的(我给出的第一个查询字符串是为了测试目的),在ADSIEdit中,我将返回7行-在我的VBScript中,无

以下是我的(当前)VBScript代码:

Set objDomain = getObject("LDAP://RootDSE")
Set objSysInfo = CreateObject("ADSystemInfo")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand =   CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection

strDNSDomain = objDomain.Get("defaultNamingContext")

objCommand.CommandText = "Select Name, uNCName, ManagedBy from "_
    & "'LDAP://DC=ad,DC=server,DC=com'" _
        & " where objectClass='volume' and uNCName = '*\5cOst-gro'"
        'The below is not working either!
'objCommand.CommandText = "<LDAP://DC=ad,DC=server,DC=com>;"_
'    & "(&(objectCategory=volume)(objectClass=volume)(uNCName=*\5cOst-gro));"_
'       & "name,uNCName;subtree"
Set objRecordSet = objCommand.Execute( , , adCmdTableDirect)
avarGetRowsArray = objRecordset.GetRows(intNumRows, BkMrk) ' returns 0 too
objRecordSet.MoveFirst ' Doesn't help
If objRecordSet.Supports(adApproxPosition)=True Then
    nrRecords=objRecordSet.RecordCount
End If
if not objRecordSet.EOF Then 
    do While Not objRecordSet.EOF 
        MsgBox "Match found! " & objRecordSet.Fields("name").Value, vbOKOnly, "Match found"
        objRecordSet.MoveNext 
    Loop 
Else 
    MsgBox "No matches found. " & UBound(avarGetRowsArray), vbOKOnly, "No matches!"
end If 
客户:

C:\tests>adfind -c -f "(&(objectCategory=volume)(objectClass=volume)(uNCName=*\5
cOst-gro))"

AdFind V01.45.00cpp Joe Richards (joe@joeware.net) March 2011

Using server: ad.server.com:389
Directory: Windows Server 2003
Base DN: DC= DC=ad,DC=server,DC=com

0 Objects returned

C:\tests>adfind -c -f "(&(objectCategory=volume)(objectClass=volume)(cn=K_*))"

AdFind V01.45.00cpp Joe Richards (joe@joeware.net) March 2011

Using server: ad.server.com:389
Directory: Windows Server 2003
Base DN: DC= DC=ad,DC=server,DC=com

1 Objects returned

@出埃及记:你的逃跑标志就是错误。如果要搜索反斜杠,必须使用“\5C”(大写)。
hier是有关更多详细信息的链接:

@exodus:您的转义符号就是错误。如果要搜索反斜杠,必须使用“\5C”(大写)。
hier是有关更多详细信息的链接:

在查询中,您要使用(uNCName=*\5cOst gro)。*\5在您的脑海中表明了什么。我想知道是否有转义问题。@geoffc\5c是反斜杠(\)的替代品,我是从ADSIEdit获得的。换句话说,在这种情况下,它将搜索*\Ost-gro(例如,成功的点击将是ad.server.com\shares\Ost-gro)#Exodus,因此我想知道转义是否解释了ADSIEdit与VBScript之间的差异。@geoffc这也是我的第一个怀疑,但我已经测试了这两个,并且没有区别。。。然而,我确实发现了一些有趣的事情。我使用dsquery和adfind进行了更多的测试,根据我运行它们的位置,查询返回的结果会有所不同;实际的AD服务器或客户端。我想我发现了一些问题……在您的查询中,您希望使用(uNCName=*\5cOst gro)。*\5在您的脑海中表明了什么。我想知道是否有转义问题。@geoffc\5c是反斜杠(\)的替代品,我是从ADSIEdit获得的。换句话说,在这种情况下,它将搜索*\Ost-gro(例如,成功的点击将是ad.server.com\shares\Ost-gro)#Exodus,因此我想知道转义是否解释了ADSIEdit与VBScript之间的差异。@geoffc这也是我的第一个怀疑,但我已经测试了这两个,并且没有区别。。。然而,我确实发现了一些有趣的事情。我使用dsquery和adfind进行了更多的测试,根据我运行它们的位置,查询返回的结果会有所不同;实际的AD服务器或客户端。我想我发现了一些东西…不幸的是,这也没有帮助:(我目前的解决办法是使用从A.D.导出的csv文件,并对其进行迭代,但这并不是最佳做法,因为每次添加或删除组时都需要手动记住并导出csv文件。我仍然相当确定这与某些权限或类似权限有关,我只是没有时间进行调查。)还没有。不幸的是,这也没有帮助:(我目前的解决办法是使用从A.D.导出的csv文件,并对其进行迭代,但这并不是最佳做法,因为每次添加或删除组时都需要手动记住并导出csv文件。我仍然相当确定这与某些权限或类似权限有关,我只是没有时间进行调查。)还没有。
C:\tests>adfind -c -f "(&(objectCategory=volume)(objectClass=volume)(uNCName=*\5
cOst-gro))"

AdFind V01.45.00cpp Joe Richards (joe@joeware.net) March 2011

Using server: ad.server.com:389
Directory: Windows Server 2003
Base DN: DC= DC=ad,DC=server,DC=com

0 Objects returned

C:\tests>adfind -c -f "(&(objectCategory=volume)(objectClass=volume)(cn=K_*))"

AdFind V01.45.00cpp Joe Richards (joe@joeware.net) March 2011

Using server: ad.server.com:389
Directory: Windows Server 2003
Base DN: DC= DC=ad,DC=server,DC=com

1 Objects returned