Fora da caixa, a execução do PowerShell com o Cmder define a cor do primeiro plano como branco:
HojeinstaleioPowerShellCoreecrieiumanovatarefadoCmderexatamentecomoatarefapadrão"PowerShell as Admin", mas aponta para pwsh.exe
em vez de Powershell.exe
:
*C:\Program Files\PowerShell\pwsh.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''"
Por motivos que não entendo, a cor do primeiro plano da janela do PowerShell Core é verde:
Enquantotentavaentenderomotivo,passeialgumtempomexendonoseguinteblocodecódigocontidoem \vendor\profile.ps1
:
[ScriptBlock]$CmderPrompt = {
$Host.UI.RawUI.ForegroundColor = "White"
Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
checkGit($pwd.ProviderPath)
}
Aqui é onde fica esquisito. Se eu alterar essa instrução Write-Host
para usar -ForegroundColor White
em vez de Green
, a cor de primeiro plano permanecerá permanentemente branca. Se eu alterá-lo para Red
, a cor do primeiro plano ficará permanentemente vermelha. Ainda mais estranho: se eu deixar a instrução Write-Host
original sozinha (usando o original Green
color), mas adicionar uma instrução Write-Host
adicional acima sem o parâmetro Foregroundcolor
, a cor do primeiro plano permanecerá branca. É como se uma instrução Write-Host
fosse necessária para manter o estado de $Host.UI.RawUI.ForegroundColor
.
Alguém mais experimentando essa esquisitice? Estou faltando algo estúpido?
Eu tentei isso com o Cmder 1.3.5 e 1.3.6 - mesmo resultado.
Exemplos adicionais:
Resultados em white
cor de primeiro plano:
[ScriptBlock]$CmderPrompt = {
$Host.UI.RawUI.ForegroundColor = "White"
Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor White
checkGit($pwd.ProviderPath)
}
Também resulta em white
cor de primeiro plano:
[ScriptBlock]$CmderPrompt = {
$Host.UI.RawUI.ForegroundColor = "White"
Write-Host "blah"
Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
checkGit($pwd.ProviderPath)
}
Resultados em red
cor de primeiro plano:
[ScriptBlock]$CmderPrompt = {
$Host.UI.RawUI.ForegroundColor = "White"
Write-Host "blah" -ForegroundColor Red
Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
checkGit($pwd.ProviderPath)
}