我遇到这样一种情况,即编译的应用程序调用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的批处理文件,所有这些都可以正常工作。
答案 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}"
似乎工作目录是错误的,并且在使用相对路径时非常重要。
否则给出脚本的绝对路径。