
В оболочке cmd можно задать (и сохранить) приглашение с помощью команды PROMPT и др. Однако при входе в Powershell из cmd он возвращается к приглашению Windows по умолчанию — обычно это текущий каталог.
Есть ли способ заставить Powershell использовать текущую командную строку Windows?
решение1
Получилось, благодаря очень полезным комментариям. На всякий случай, если кто-то еще столкнется с той же проблемой:
$profile
Выдает местоположение, где существует (или будет существовать) профиль Powershell. Если онне делаетсуществует, следующая команда создаст его:
new-item -itemtype file -path $profile -force
Здесь мы можем просто написать функцию приглашения. Я обычно устанавливаю свою для текущего пользователя так:
function prompt {"PS: $(echo 'RobbieDee')>"}
решение2
Prompt
глобально устанавливается через%UserProfile%\Documents\WindowsPowerShell\profile.ps1
без цвета:
Function set-prompt { "$ESC[$($executionContext.SessionState.Path.CurrentLocation)$('$' * ($nestedPromptLevel + 1)) $ESC[0m" }
с цветом:
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
- Показывать цветную подсказку для пользователя и красную подсказку для администратора
- Позволяет переключать профили «на лету»:
- Скопируйте/вставьте
Default
раздел ниже и отредактируйте соответствующим образом.(включая имя, т.е.Default
). Перезагрузите сеанс и переключите приглашение черезset-prompt Default
||set-prompt <name>
- Скопируйте/вставьте