Windows PowerShell: изменение командной строки - PullRequest
73 голосов
/ 20 апреля 2011

Как изменить командную строку в Windows PowerShell?

Например, приглашение по умолчанию говорит

PS C:\Documents and Settings\govendes\My Documents>

Я хочу настроить эту строку.

Ответы [ 6 ]

91 голосов
/ 20 апреля 2011

Просто поместите функцию prompt в свой профиль PowerShell (notepad $PROFILE), например:

function prompt {"PS: $(get-date)>"}

или цветной:

function prompt
{
    Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White
    return " "
}
19 голосов
/ 07 января 2014

По поводу комментария к Ответ Ocaso Protal , для Windows Server 2012, а также для Windows 7 (в окне PowerShell) необходимо следующее:

new-item -itemtype file -path $profile -force
notepad $PROFILE

Я бы предложилследующее, как приглашение, если вы работаете с несколькими именами пользователей (например, вы сами + рабочий логин):

function Global:prompt {"PS [$Env:username]$PWD`n>"} 

(за это идет Дэвид И. Макинтош.)

7 голосов
/ 21 декабря 2016

Если вы хотите сделать это самостоятельно, тогда Ответ Окасо Протала - это путь.Но если вы такой же ленивый, как я, и просто хотите что-то сделать для вас, тогда я настоятельно рекомендую пакет Pshazz Люка Сэмпсона .

Просто чтобы показать вам, насколько вы ленивы, япредоставлю краткое руководство.

  • Установите Pshazz с Scoop (scoop install pshazz)
  • Используйте хорошую предопределенную тему (pshazz use msys)
  • Drink (root) beer

Pshazz также позволяет создавать свои собственные темы, что так же просто, как настроить файл JSON. Проверьте мой , чтобы увидеть, как это просто!

5 голосов
/ 31 августа 2017

В командной строке мне нравится текущая метка времени и разрешенные буквы дисков для сетевых дисков. Чтобы сделать его более читабельным, я поместил его в две строки и немного поиграл с цветами.

С CMD я закончил с

PROMPT=$E[33m$D$T$H$H$H$S$E[37m$M$_$E[1m$P$G

Для PowerShell я получил тот же результат с:

function prompt {
    $dateTime = get-date -Format "dd.MM.yyyy HH:mm:ss"
    $currentDirectory = $(Get-Location)
    $UncRoot = $currentDirectory.Drive.DisplayRoot

    write-host "$dateTime" -NoNewline -ForegroundColor White
    write-host " $UncRoot" -ForegroundColor Gray
    # Convert-Path needed for pure UNC-locations
    write-host "PS $(Convert-Path $currentDirectory)>" -NoNewline -ForegroundColor Yellow
    return " "
}

Что немного более читабельно: -)

КСТАТИ:

  • Я предпочитаю powershell_ise.exe $PROFILE вместо (немой) Блокнот .
  • Если вы хотите отладить вашу подсказку () с точками останова, вам следует переименовать функцию подсказки во что-либо еще (или попробовать ее в другом файле). В противном случае вы можете оказаться в цикле: когда вы останавливаете отладку, снова вызывается prompt (), и вы снова останавливаетесь на точке останова. Поначалу довольно раздражает ...
4 голосов
/ 28 октября 2017

Эта версия ответа Уоррена Стивенса позволяет избежать шумного «Microsoft.PowerShell.Core \ FileSystem» в пути, если вы Set-Location используете сетевые ресурсы.

function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "} 
3 голосов
/ 27 июля 2018

Чтобы просто показать букву диска, которую я использую:

            function prompt {(get-location).drive.name+"\...>"}

Затем, чтобы вернуться к пути, который я использую:

            function prompt {"$pwd>"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...