我在 Windows 11 上。我需要用 Powershell 运行一个程序。这个程序有自己的 UI。我希望能够在不关闭程序的情况下关闭 Powershell 窗口。但是无论我怎么做,只要我关闭 Powershell 窗口,程序就会关闭。即使使用 Start-Process 运行该程序,Powershell 窗口关闭后,程序仍然会关闭。
如果我使用 Powershell 运行 Powershell,使用 Start-Process 打开 Powershell 中的程序,然后退出该 Powershell,它仍然保持打开状态。但是,一旦我关闭原始 Powershell 窗口,程序就会关闭。
使用
powershell.exe
Windows PowerShell CLI 以非交互方式启动您的程序,例如:您的症状意味着您的 GUI 应用程序明确附加到其调用者的控制台,这对于 GUI 应用程序来说是不典型的;但是,它有时用于向控制台提供诊断输出。
Visual Studio Code 就是这样一个应用程序的示例,如果您直接
.exe
启动它的文件(默认情况下,它通过辅助批处理文件启动),如上所示(假设用户级安装了 Visual Code)。code.cmd
一旦连接到呼叫者的控制台,关闭后者也会终止启动的应用程序,这就是您所看到的。
我不太清楚细节,但我推测上述方法有效的原因是:
PowerShell异步启动 GUI(-subsystem)可执行文件(即使通过直接调用,如上所示 -简单启动
&
无需)。Start-Process
当异步启动的应用程序尝试附加到其父进程的控制台时,父进程不再存在(因为 CLI 进程在异步启动后立即终止),因此不会创建对另一个进程(的控制台)的依赖。