Windows PowerShell: зміна командного рядка


85

Як змінити командний рядок за допомогою Windows PowerShell?

Наприклад, у запиті за замовчуванням сказано

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

Я хочу налаштувати цей рядок.

Відповіді:


107

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

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

або кольорові:

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

2
notepad $PROFILEне працює в Windows 7 із запиту адміністратора PowerShell
jcollum

18
Ааа, я бачу, що спочатку вам потрібно створити профіль:new-item -itemtype file -path $profile -force
jcollum

4
Примітка: Ви можете просто вставити функцію підказки в PowerShell, щоб змінити шлях підказки, замість того, щоб зберігати функцію у своєму профілі, але вам доведеться це робити кожного разу, коли запускаєте PowerShell.
Larry Battle

3
Вам також потрібно запустити Powershell як адміністратор і зробити Set-ExecutionPolicy RemoteSigned.
кві

1
@qed, Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestrictedякщо ви хочете змінитись лише для поточного користувача або не можете працювати як адміністратор.
cz

21

Що стосується коментаря до відповіді 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>"} 

(За це заслуга Девіда І. Макінтоша.)


1
Вам також потрібно запустити Powershell як адміністратор і зробити Set-ExecutionPolicy RemoteSigned.
кві

11

У підказці мені подобається поточна позначка часу та розв’язані літери дисків для мережевих дисків. Щоб зробити його більш читабельним, я склав його у два рядки та трохи пограв із кольорами.

З 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 () за допомогою точок зупинки, вам слід перейменувати функцію prompt на будь-що інше (або спробувати в іншому файлі). В іншому випадку ви можете потрапити в цикл: Коли ви припините налагодження, знову викликається prompt (), і ви знову зупиняєтесь на точці зупинки. Спочатку дуже дратує ...

Тільки те, що я шукав!
Глен Літтл

8

Якщо ви хочете зробити це самостійно, тоді відповідь Окасо Протала - це шлях. Але якщо ви ледачі, як я, і просто хочете, щоб щось для вас зробили, то я настійно рекомендую пакет Pshazz Люка Семпсона .

Щоб показати вам, яким ледачим ви можете бути, я надам короткий підручник.

  • Встановіть Pshazz за допомогою Scoop ( scoop install pshazz)
  • Використовуйте приємну заздалегідь визначену тему ( pshazz use msys)
  • Пити (кореневе) пиво

Pshazz також дозволяє створювати власні теми, що настільки просто, як налаштування файлу JSON. Перевірте мій, щоб побачити, наскільки це просто!


7

Щоб просто показати букву диска, яку я використовую:

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

Потім, щоб повернутися до шляху, який я використовую:

            function prompt {"$pwd>"}

5

Ця версія відповіді Уорена Стівенса дозволяє уникнути галасливого "Microsoft.PowerShell.Core \ FileSystem" на шляху Set-Locationдо мережевих спільних ресурсів.

function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "} 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.