1

我正在更新现有的 HTA 应用程序。该页面显示公司中每台机器在过去 3 天内未执行备份(通过 ibm tsm)的记录。我为每条记录制作了一个按钮,当按下该按钮时,应该使用 PSEXEC 执行一个 cscript 进程,该进程在目标机器上运行一个 exe 并传递一个参数。(dsmc.exe INCREMENTAL) 现在我可以手动打开 cmd 提示符,使用 \Remote cmd 命令创建远程 cmd,然后运行应用程序就好了。但是没有创建远程 cmd 提示符的额外步骤,并尝试

PSEXEC \\RemoteMachine cscript.exe "C:\Program Files\tivoli\tsm\baclient\dsmc.exe" INCREMENTAL

只会导致错误。我知道应该可以远程执行这个程序并仍然传入一个参数,但它只是没有运行。当我使用创建远程 cmd 提示符时

PSEXEC \\RemoteMachine cmd

在我退出远程 cmd 提示符之前,执行脚本中的任何其他行都不会执行。

PSEXEC 是否有我不理解的秘密或获取现有 cmd 提示符(我刚刚创建的远程提示符)并将其传递给执行命令的方法?请帮忙

*注意,这不是我第一个使用 PSEXEC 的脚本。我通常使用我的 VBScript 在本地创建一个包含 PSEXEC 脚本的批处理文件,然后执行它。永远无法让 wsshell.run 与 PSEXEC 一起工作。

4

1 回答 1

3

这是(或多或少)我用于使用objShell.Run的语法psexec

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c ""%pathToPsexec%\psexec.exe"" -accepteula -s -i -d \\RemoteMachine cmd.exe /k ipconfig",0,True

这只是一个示例,但表明您可以发送嵌套开关等。了解 psexec 的开关也很重要。

-accepteula- 这接受关于 psexec 的许可协议。除非您是第一次运行它并且希望它安静,否则这不是必需的。
-s- 作为远程计算机的系统帐户运行。如果你不使用这个,你需要指定-u-p如果你想交互运行。否则,您的凭据将执行网络登录
-i- 指定以交互方式运行。这可以省略,也可以指定一个会话。
-d- 在继续之前不要等待远程命令完成

于 2015-07-17T17:27:23.553 回答