我有一个如下结构的批处理文件:
cd "C:\my\scripts\directory
powershell -f myPowershellSCript.ps1
exit %errorlevel%
此批处理文件通过内部远程shell应用程序(对我来说主要是一个黑盒子)以非交互方式发送到另一台要运行的计算机。我可以执行应用程序并在本地终端上查看它的输出。该脚本正在完成powershell脚本,然后只返回测试计算机上的远程shell,而无需运行批处理文件中的最后一行。我看到cmd.exe shell回退到远程计算机上C:\ my \ scripts \目录下的提示,只是等待。因为它是非交互式的,所以脚本永远不会完成。
我想将最后一个退出行标记到调用powershell的行的末尾,但我尝试过的所有内容(下面)都没有用。我担心powershell会将所有内容都作为输入,而不是批量解释它们作为两个单独的命令。
powershell -f SecurePaymentsTestLauncher.ps1 && exit 1
powershell -nonInteractive -f SecurePaymentsTestLauncher.ps1 && exit 1
powershell -nonInteractive -command "& 'SecurePaymentsTestLauncher.ps1'" && exit 1
powershell -nonInteractive -command "& 'SecurePaymentsTestLauncher.ps1'" ; exit 1
powershell -nonInteractive -f SecurePaymentsTestLauncher.ps1 ; exit 1
仍会产生相同的结果。没有从远程执行返回。
当第一个命令调用powershell时,如何将第二个命令附加到批处理文件行?
答案 0 :(得分:1)
尝试
cd "C:\my\scripts\directory"
start powershell -f myPowershellSCript.ps1
exit %errorlevel%
在powershell前面使用'start'实例化批处理脚本主机之外的单独的PowerShell主机,这将允许你的ps1文件在你的批处理脚本直接进入'exit%errorlevel%'
时执行它的操作答案 1 :(得分:1)
您的PowerShell进程是否已退出状态0? &&
conditional operator仅执行它所遵循的命令退出0之前的命令。如果您想要exit 1
而不管PowerShell是退出零还是非零,请使用单&
powershell
1}}。
在.\SecurePaymentsTestLauncher.ps1
命令中,您可能还需要将.ps1脚本名称调用为-ExecutionPolicy RemoteSigned
并添加<
个参数。