此查询在我的本地计算机上正常运行:
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\\"
为什么这不起作用的任何线索?
答案 0 :(得分:2)
尝试通过WMI在远程计算机上映射驱动器将失败,但有一种解决方法。感谢Frank White的鼓舞人心的代码,现在存在一个完全充实的过程,通过WMI使用命令提示符和传递显式凭据来映射远程计算机上的驱动器。
答案 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。