在PowerShell调用

时间:2016-04-01 16:12:57

标签: windows powershell batch-file cmd append

我有一个如下结构的批处理文件:

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时,如何将第二个命令附加到批处理文件行?

2 个答案:

答案 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并添加<个参数。