我正在尝试使用 Window 10 WMIC 远程调用一些代码。
rem command prompt, machine 1 (main computer)
WMIC /node:"MACHINE_2" process call create "cmd.exe /k "%USERPROFILE%\test.vbs" "
这个电话似乎正确地通过了。它从 test.vbs 产生部分输出(如下所示),这意味着文件被调用并执行。
' test.vbs, machine 2 (MACHINE_2, in above code)
Set objFSO=CreateObject("Scripting.FileSystemObject")
outFile="%USERPROFILE%\out.txt"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write "test1" & vbCrLf
objFile.Close
MsgBox("hi")
' CreateObject("WScript.Shell").Run "cmd /c ""nircmd.exe sendkey 0xB3 press"" ", 0
' Set WshShell = Nothing
outFile="%USERPROFILE%\out.txt"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.Write "test2" & vbCrLf
objFile.Close
预期行为:脚本应将“test1”写入 out.txt。然后它应该打开一个 MsgBox。在 Machine_2 上关闭 MsgBox 后,它应该用“test2”覆盖 out.txt 的内容。
MsgBox 下面的两行注释代码可以替换 MsgBox 代码,并且具有相同的行为。
在本地执行 vbs 文件时,会发生预期的行为。但是,当使用 WMIC 调用时,会打印“test1”,然后执行似乎会停止。MsgBox 永远不会显示,“test2”永远不会覆盖 out.txt 的内容。
我很困惑为什么会发生这种情况,以及我可能会采取哪些步骤来使其发挥作用。在这一点上,我已经用尽了我的 google-fu。