$ host.setshouldexit()不退出

时间:2018-01-07 17:51:50

标签: c# powershell powershell-v2.0

我遇到这样一种情况,即编译的应用程序调用cmd.exe,该cmd.exe运行调用

的批处理文件
powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command “& {.\script.ps1}

script.ps1$host.setshouldexit($exitcode)行。

但由于某种原因,执行PS1的powershell.exe进程不会退出。即使我跑

powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command “& {.\script.ps1;Exit $lastexitcode} 

它永远不会通过PS1到Exit命令。将Exit添加到PS1的末尾也不起作用。真正令人烦恼的是,如果我手动启动CMD,打开另一个CMD来复制已编译的应用程序,并执行调用powershell.exe的批处理文件,所有这些都可以正常工作。

2 个答案:

答案 0 :(得分:0)

嗯,这是你发布的帖子的错误。缺少关闭'Double Quote',但我确信这是一个复制粘贴的东西。

然而,尝试将发布的命令更改为:

powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process powershell .\script.ps1}"

powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command “& {Start-Process .\script.ps1;Exit $lastexitcode}" 

即使没有这个......

$host.setshouldexit()

......他们应该自动关闭。

答案 1 :(得分:0)

检查您的工作目录

powershell.exe -NonInteractive -NoProfile -ExecutionPolicy Bypass -Command “& {pwd;.\script.ps1}"

似乎工作目录是错误的,并且在使用相对路径时非常重要。

否则给出脚本的绝对路径。