Windows PowerShell: komut istemini değiştirme


86

Windows PowerShell'i kullanarak komut istemini nasıl değiştiririm?

Örneğin, varsayılan bilgi isteminde

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

Bu dizeyi özelleştirmek istiyorum.

Yanıtlar:


110

İşlevi promptPowerShell profilinize ( notepad $PROFILE) koyun , örneğin:

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

veya renkli:

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

3
notepad $PROFILEbir yönetici powershell isteminden Windows 7'de çalışmıyor
jcollum

19
Ahh, önce profili oluşturmanız gerektiğini görüyorum:new-item -itemtype file -path $profile -force
jcollum

4
Not: Fonksiyonu profilinize kaydetmek yerine, komut istemi yolunu değiştirmek için, komut istemi işlevini powershell'e yapıştırabilirsiniz, ancak bunu powershell'i her başlattığınızda yapmanız gerekecektir.
Larry Battle

3
Ayrıca Powershell'i yönetici olarak çalıştırmanız ve yapmanız gerekir Set-ExecutionPolicy RemoteSigned.
2016

1
@qed Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted, yalnızca mevcut kullanıcı için değişiklik yapmak istiyorsanız veya yönetici olarak çalıştıramıyorsanız.
cz

21

Ocaso Protal'in cevabına yapılan bir yorumla ilgili olarak , Windows Server 2012 ve Windows 7 için (bir PowerShell penceresinde) aşağıdakiler gereklidir:

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

Birden fazla kullanıcı adıyla çalıştırırsanız (örneğin, kendiniz + bir üretim girişi) aşağıdakileri bir uyarı olarak öneririm:

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

(Bunun için kredi David I. McIntosh'a gidiyor.)


1
Ayrıca Powershell'i yönetici olarak çalıştırmanız ve yapmanız gerekir Set-ExecutionPolicy RemoteSigned.
2016

11

Komut isteminde, güncel bir zaman damgasını ve ağ sürücüleri için çözümlenmiş sürücü harflerini seviyorum. Daha okunaklı olması için iki satıra yazdım ve biraz renklerle oynadım.

CMD ile bitirdim

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

PowerShell için şununla aynı sonucu aldım:

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

Hangisi biraz daha okunabilir :-)

BTW:

  • powershell_ise.exe $PROFILE(Aptal) Not Defteri yerine tercih ederim .
  • İsteminizde () kesme noktaları ile hata ayıklamak isterseniz, komut istemi işlevini başka bir şeyle yeniden adlandırmalısınız (veya başka bir dosyada denemelisiniz). Aksi takdirde bir döngüye girebilirsiniz: Hata ayıklamayı durdurduğunuzda, istem () tekrar çağrılır ve tekrar kesme noktasında durursunuz. İlk başta oldukça rahatsız edici ...

Tam da aradığım şey!
Glen Little

8

Kendiniz yapmak istiyorsanız, Ocaso Protal'ın cevabı doğru yoldur. Ama benim gibi tembelseniz ve sadece sizin için bir şey yapmasını istiyorsanız, o zaman Luke Sampson'ın Pshazz paketini şiddetle tavsiye ederim .

Sadece ne kadar tembel olabileceğinizi göstermek için hızlı bir eğitim sağlayacağım.

  • Scoop ( scoop install pshazz) ile Pshazz'ı yükleyin
  • Önceden tanımlanmış güzel bir tema kullanın ( pshazz use msys)
  • İçki (kök) bira

Pshazz, bir JSON dosyasını yapılandırmak kadar basit olan kendi temalarınızı oluşturmanıza da olanak tanır. Ne kadar kolay olduğunu görmek için benimkine bakın!


7

Sadece kullandığım sürücü harfini göstermek için:

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

Sonra kullandığım yola dönmek için:

            function prompt {"$pwd>"}

5

Warren Stevens'ın cevabının bu sürümü, Set-Locationağ paylaşımları için yoldaki gürültülü "Microsoft.PowerShell.Core \ FileSystem" sorununu ortadan kaldırır .

function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "} 
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.