Powershell:杀死父母而不是孩子?

Powershell:杀死父母而不是孩子?

我首先单击一个图标来运行 CMD 批处理文件。(黑色 CMD 窗口)这将打开一个 powershell 脚本。然后,它将启动第二个脚本,该脚本将打开一个 GUI。用户在 GUI 中进行选择,然后会打开一个浏览器窗口。

但是,一旦浏览器打开,它就会保持 CMD 打开(可以通过删除批处理文件中的 CMD/k 来“终止”它,以启用错误检查)。但是,浏览器打开后我可以“终止”GUI 吗?

我目前使用“Start-Process”打开 GUI,然后在第二个脚本中使用另一个“Start-Process”打开浏览器。由于我相信它是“单线程”,我认为每个进程都必须等待其“子进程”完成后才能关闭自身,而理想情况下,我希望 CMD/Powershell 在浏览器打开后退出。

** 我还没有发布代码,因为到目前为止它已经超过 300 行。

+++++ 感谢“HarryMC”给我一些指点。我将他的“开始”建议添加到批处理文件中,然后继续关闭 CMD 窗口...但打开了一个 Powershell 窗口+GUI。最后,发现你可以隐藏 PS 窗口,所以完整的一行是:

Start PowerShell -WindowStyle Hidden -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"

这意味着在 GUI 加载之前屏幕上会闪现两个窗口,但已经到了这一步。当然,隐藏窗口并不意味着进程已终止 - 下一步研究 - 但(到目前为止)对最终用户来说看起来“更整洁”。

答案1

您以每个程序都是其父程序的子程序的方式打开程序。为了能够让父程序终止,您需要将每个程序作为独立进程启动。

对于 CMD,命令是开始对于PowerShell
,使用 致电接线员 &

每个程序都应该调用下一个程序,然后终止自身,这比终止它更简单。如果调用 CMD 和 PowerShell 来执行单个命令(cmd /c commandpowershell "command"),它们将自动终止。

相关内容