查询映射网络驱动器

时间:2012-10-16 15:23:07

标签: windows vbscript wmi wmi-query

此查询在我的本地计算机上正常运行:

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\\"

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

为了调试这个,我运行了以下内容:

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。