1

このクエリは、ローカル マシンで正常に実行されます。

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

なぜこれがうまくいかないのかについての手がかりはありますか?

4

2 に答える 2

2

回避策はありますが、WMI 経由でリモート コンピューター上のドライブをマップしようとすると失敗します。Frank White のインスピレーションを与えるコードのおかげで、コマンド プロンプトを使用して明示的な資格情報を渡すことで、WMI 経由でリモート コンピューター上のドライブをマップする、完全に具体化されたプロセスが存在するようになりました。

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

于 2012-11-04T03:32:24.930 に答える
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 をサポートしていないことを意味します。

于 2012-10-22T11:23:12.137 に答える