我有一个包含调用winrs的脚本,以便远程启动用户指定目标机器上的.exe的执行。
我想要以下function:
我有的代码如下:
@echo off echo ------------------------------------------------------- echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE echo ------------------------------------------------------- SET /p pcToReconnect= echo Attempting to contact Agent. call winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1 echo Agent reconnected. Please allow ~5mins for your management console to update.
该代码执行直到winrs调用,它实际上执行目标机器上的.exe,但似乎在这之后,远程shell只是保持打开状态。
如果我按ctrl + c在这一点上“终止shell?(Y / N)”被放置在我的日志文件中,(但没有在CMD提示输出),然后我可以推“Y”和进入,远程shell将退出,并且“终止批处理作业(Y / N)”出现在cmd提示符中,但最后一个echo语句从不执行。
如何让远程shell在运行.exe之后自动closures,并在脚本已经执行完毕的情况下回应某种确认脚本已经完成?
所有帮助赞赏!
您正在使用call
执行新的cmd.exe
窗口,并在新窗口中运行winrs并退出。 删除它,它会工作。 我在最后添加了暂停,以防您通过双击运行批处理。
@echo关闭
echo ------------------------------------------------------- echo PLEASE ENTER PC NAME OF DISCONNECTED MACHINE echo ------------------------------------------------------- SET /p pcToReconnect= echo Attempting to contact Agent. winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1 echo Agent reconnected. Please allow ~5mins for your management console to update. pause
编辑
经过一些分析,似乎批处理正在等待程序完成,所以可以用start来调用它,然后返回原来的提示符。
start winrs -r:%pcToReconnect% "C:\Path\To The\exe that I want\toExecute.exe" >> logfile.txt 2>>&1