Подтвердить что ты не робот

Windows powershell: изменение командной строки

Использование Windows powershell, как изменить командную строку? Например, подсказка по умолчанию сообщает

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

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

Спасибо

4b9b3361

Ответ 1

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

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

или цвет:

function prompt
{
    Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White
    return " "
}

Ответ 2

В связи с вышеприведенным комментарием для Windows Server 2012 и Win7 требуется следующее:

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

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

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

(кредит Дэвиду И. Макинтошу для этого)

Ответ 3

Если вы хотите сделать это самостоятельно, то Ocaso Protal answer - это путь. Но если вы ленитесь, как я, и просто хотите что-то сделать для вас, я настоятельно рекомендую пакет Luke Sampson Pshazz.

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

  • Установить Pshazz с Scoop (scoop install pshazz)
  • Используйте приятную предопределенную тему (pshazz use msys)
  • Питьевое (корневое) пиво

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

Ответ 4

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

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

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

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

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 " "
}

Это немного читаемо: -)

BTW:

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

Ответ 5

В этой версии ответа Уоррена Стивенса избегает шумной "Microsoft.PowerShell.Core\FileSystem" в пути, если вы Set-Location к сетевым ресурсам.

function prompt {"PS [$Env:[email protected]$Env:computername]$($PWD.ProviderPath)`n> "}