No shell cmd, é possível definir (e salvar) o prompt usando o comando PROMPT et al. No entanto, quando você acessa o Powershell a partir do cmd, ele reverte para o prompt padrão do Windows - geralmente o diretório atual.
Existe uma maneira de forçar o Powershell a usar o prompt atual do Windows?
Responder1
Consegui que isso funcionasse graças aos comentários muito úteis. Apenas no caso de alguém ter o mesmo problema:
$profile
Fornece o local onde o perfil Powershell existe (ou existiria). Se issonãoexistir, o seguinte comando o criaria:
new-item -itemtype file -path $profile -force
Aqui, podemos apenas escrever uma função de prompt. Geralmente defino o meu para o usuário atual assim:
function prompt {"PS: $(echo 'RobbieDee')>"}
Responder2
Prompt
é definido globalmente através%UserProfile%\Documents\WindowsPowerShell\profile.ps1
sem cor:
Function set-prompt { "$ESC[$($executionContext.SessionState.Path.CurrentLocation)$('$' * ($nestedPromptLevel + 1)) $ESC[0m" }
c/ cor:
switch ($Action) { "Default" { Function global:prompt { if (test-path variable:/PSDebugContext) { '[DBG]: ' } write-host " " write-host ("$ESC[48;2;40;40;40m$ESC[38;2;170;210;0m$(Get-Location) $ESC[0m $ESC[0m") if ( $host.UI.RawUI.WindowTitle -match "Administrator" ) { $Host.UI.RawUI.ForegroundColor = 'Red' $(if ($nestedpromptlevel -ge 1) { write-host ('PS $$ ') -ForegroundColor Red -NoNewLine } else { write-host ('PS $ ') -ForegroundColor Red -NoNewLine }) } else { $(if ($nestedpromptlevel -ge 1) { write-host ('PS $$ ') -ForegroundColor Blue -NoNewLine } else { write-host ('PS $ ') -ForegroundColor Blue -NoNewLine }) } return " " } } } set-prompt Default
- Mostrar um prompt de texto colorido para o usuário e um prompt de texto vermelho para um administrador
- Permite a troca instantânea de perfis:
- Copie/cole
Default
a seção abaixo dela e edite de acordo(incl. nome, ou sejaDefault
). Recarregue a sessão e alterne o prompt viaset-prompt Default
||set-prompt <name>
- Copie/cole