Есть ли способ заставить Powershell наследовать командную строку cmd?

Есть ли способ заставить Powershell наследовать командную строку cmd?

В оболочке 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>

Связанный контент