VBScript 和 PSEXEC - 远程执行应用程序

Posted

技术标签:

【中文标题】VBScript 和 PSEXEC - 远程执行应用程序【英文标题】:VBScript and PSEXEC - Remotely Executing Application 【发布时间】:2015-07-16 15:25:51 【问题描述】:

我正在更新现有的 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 一起工作。

【问题讨论】:

1. cscript的第一个参数是可执行文件可以吗? 2.通过临时文件psexec \\pc @tmpfile传递命令是否幸运? 您是否尝试在PSEXEC 命令上使用-d 开关,这样它就不会等待退出?另外,您看到的错误是什么? wOxxOm - 这对我有用,但不是每个运行该应用程序的人都是域管理员,对他们不起作用。我之前在某些只有管理员才会使用的应用程序上使用过这种方法。 langstrom - 如果我没记错的话,这是一个错误代码 12。我会再试一次,但我今天忙于工作,现在无法进入代码。 【参考方案1】:

这是(或多或少)我使用objShell.Runpsexec 一起使用的语法:

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 - 不要等待远程命令完成后再继续

【讨论】:

你是从哪里得知这个荣耀的?大声笑虽然说真的,有什么推荐的资源来学习更多关于嵌套 psexec 开关的信息吗?我将不得不回顾许多旧程序并更新它们。 确保您使用的是最新版本的 psexec。在某些时候,他们实际上对发送开关的方式进行了更改。它曾经不那么聪明,更容易出错。我不记得我在哪里学到的,只是反复试验和大量谷歌搜索。 好的,刚刚有机会实现它并且它有效! :D 你先生太棒了。互联网赢得了女士们先生们!现在正在清理我所有实现 psexec 的脚本。哇!

以上是关于VBScript 和 PSEXEC - 远程执行应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PsExec 执行远程命令

Psexec 远程执行文件 提示 拒绝访问

如何在远程计算机上执行vbs文件

执行 PSEXEC 时出错

来自 ant 的 PsExec 不会终止

远程启动应用程序时无法从 psexec 接收异步输出