Estou usando o Windows 11. Preciso executar um programa com o Powershell. Este programa tem sua própria interface de usuário. Quero poder fechar a janela do Powershell sem que o programa feche. Mas, independentemente do que eu faça, assim que fecho a janela do Powershell, o programa fecha. Mesmo usando Iniciar-Processo para executar o programa, ele ainda fecha quando a janela do Powershell é fechada.
Se eu usar o Powershell para executá-lo, abrir o programa dentro dele usando Iniciar-Processo e, em seguida, Sair do Powershell, ele permanecerá aberto. Mas assim que eu fecho a janela original do Powershell, o programa fecha.
Use
powershell.exe
o Windows PowerShell CLI para iniciar seu programa de forma não interativa , por exemplo:Seu sintoma implica que seu aplicativo GUI se conecta explicitamente ao console do chamador , o que é atípico para aplicativos GUI; no entanto, às vezes é usado para fornecer saída de diagnóstico ao console.
O Visual Studio Code é um exemplo de tal aplicativo, se você iniciar seu
.exe
arquivo diretamente (enquanto por padrão ele é iniciado por meio de um arquivo aux. batch ,code.cmd
), conforme mostrado acima (assume uma instalação em nível de usuário do Visual Code).Uma vez conectado ao console do chamador, fechá-lo também encerra o aplicativo iniciado, que é o que você viu.
Não estou certo sobre os detalhes, mas presumo que a razão pela qual o acima funciona seja:
O PowerShell inicia executáveis GUI(-subsistema) de forma assíncrona (mesmo em invocação direta , via
&
, como mostrado acima - não há necessidadeStart-Process
de inicialização simples).No momento em que o aplicativo iniciado de forma assíncrona tenta se conectar ao console do seu processo pai, o processo pai não existe mais (porque o processo CLI foi encerrado logo após o início do lançamento assíncrono), portanto, nenhuma dependência no console de outro processo é criada.