Você não está escapando de nada no primeiro cenário; o novo processo é criado com uma linha de comando completa de C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
, exatamente como você o coloca. (Verificado com o Process Explorer.)
O Windows armazena as informações de estilo do console - cores, fonte, tamanho da janela - em HKCU\Console
. Quando um programa em modo de console (ou seja, um que produz seu próprio conhost.exe
instance) é executado, o Windows verifica uma subchave de Console
nomeou o caminho completo do EXE do programa, com variáveis de ambiente no caminho recolhido (consulte a nota) e com \
substituído por _
. (Se isso falhar, o Windows verificará uma subchave denominada sem a substituição \
, mas o Editor do Registro não permitirá incluir \
em um nome de chave. Verificado com o Process Monitor.)
Nota: "Recolhimento" (em relação às variáveis de ambiente) é apenas a minha palavra para o oposto de "expandir". A expansão é o processo de substituição de variáveis de ambiente, como %SystemRoot%
, por seus valores (por exemplo, C:\Windows
, neste caso). Parece que o Windows recolhe os valores em variáveis de ambiente quando possível antes de consultar a chave do console, portanto, C:\Windows
é substituído por %SystemRoot%
.
Normalmente, o Windows localiza as configurações do PowerShell na subchave chamada %SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe
. Mas como o caminho do programa tem barras invertidas extras - o que o Windows perdoa, mas não limpa, pelo menos nesse caso - ele não encontra nenhuma configuração especial do console porque não há uma subchave adequada. Quando defini meu item de menu de contexto para iniciar C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
(anote o último \
dobrado) e renomei a subchave real como %SystemRoot%_System32_WindowsPowerShell_v1.0__powershell.exe
(observe o último _
duplicou), a instância do PowerShell iniciada recebeu o estilo.
Além de: as instâncias do PowerShell iniciadas digitando powershell
em um prompt de comando existente nunca obtêm os estilos especiais porque estão anexados ao console do pai, que geralmente tem os estilos padrão chatos. Esse fenômeno não está relacionado ao acima.
Outras leituras: boa resposta de Jay Bazuzi, que menciona vários estilos de lugares.