【问题标题】:Query Mapped Network Drive查询映射的网络驱动器
【发布时间】:2012-10-16 15:23:06
【问题描述】:

这个查询在我的本地机器上运行良好:

strComputer = "."
drive = "C:"
path = "\\path\\to\\local\\folder\\"

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery("Select * From CIM_DataFile Where Path = '"&path&"' and drive='"&drive&"'")

If colFiles.Count < 1 Then
    Wscript.Echo "Folder does not exist"
Else
    Wscript.Echo "Folder does exist"
End If

但是当我尝试查询映射的网络驱动器时,程序失败并显示“文件夹不存在”。但我确信它是文件的正确路径。

唯一改变的部分是:

drive = "Z:"
path = "\\path\\to\\mapped\\drive\\folder\\"

关于为什么这不起作用的任何线索?

【问题讨论】:

  • 在 vbscript 中使用这样的双反斜杠是不合适的。
  • 好的,但是程序对于本地文件运行良好。这使用双反斜杠。所以我认为不会是反斜杠。
  • 避免去想它。实际上删除反斜杠并重试。会发生什么?
  • 当我从路径名中删除反斜杠时,我收到来自 Windows 脚本主机的错误,读取“无效查询”,源 SWbemObjectSet,代码 80041017。

标签: windows vbscript wmi wmi-query


【解决方案1】:

尝试通过 WMI 映射远程计算机上的驱动器将失败,但有一种解决方法。感谢 Frank White 鼓舞人心的代码,现在有了一个完整的过程,可以通过 WMI 使用命令提示符并传递显式凭据来映射远程计算机上的驱动器。

https://stackoverflow.com/a/11948096/1569434

【讨论】:

    【解决方案2】:

    所以为了调试它,我运行了以下命令:

    strComputer = "."
     Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
     Set colFiles = objWMIService.ExecQuery("Select * from CIM_Datafile Where Drive = 'Z:'")
     For Each objFile in colFiles
        Wscript.Echo objFile.Name
     Next
    

    这导致错误“远程过程调用失败”,我理解这意味着映射的驱动器不支持 WMI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多