about_Prompts
Kısa açıklama
İşlevi Prompt
açıklar ve özel Prompt
bir işlevin nasıl oluşturulacağını gösterir.
Uzun açıklama
PowerShell komut istemi, PowerShell'in bir komutu çalıştırmaya hazır olduğunu gösterir:
PS C:\>
PowerShell'in yerleşik Prompt
bir işlevi vardır. PowerShell profil betiğinizde kendi özelleştirilmiş Prompt
işlevinizi tanımlayabilirsiniz.
Prompt işlevi hakkında
İşlev, Prompt
PowerShell isteminin görünümünü belirler.
PowerShell yerleşik Prompt
bir işlevle birlikte gelir, ancak kendi Prompt
işlevinizi tanımlayarak bunu geçersiz kılabilirsiniz.
İşlevin Prompt
söz dizimi aşağıdaki gibidir:
function Prompt { <function-body> }
İşlevin Prompt
bir nesne döndürmesi gerekir. En iyi uygulama olarak, dize olarak biçimlendirilmiş bir dize veya nesne döndürebilirsiniz. Önerilen uzunluk üst sınırı 80 karakterdir.
Örneğin, aşağıdaki Prompt
işlev bir "Hello, Dünya" dizesi ve ardından sağ açılı ayraç (>
) döndürür.
PS C:\> function prompt {"Hello, World > "}
Hello, World >
Prompt işlevini alma
İşlevi Prompt
almak için cmdlet'ini Get-Command
veya İşlev sürücüsündeki cmdlet'ini kullanın Get-Item
.
Örnek:
PS C:\> Get-Command Prompt
CommandType Name ModuleName
----------- ---- ----------
Function prompt
İstem değerini ayarlayan betiği almak için dot yöntemini kullanarak işlevin ScriptBlock özelliğini Prompt
alın.
Örnek:
(Get-Command Prompt).ScriptBlock
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) "
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
Tüm işlevler Prompt
gibi işlev de sürücüde Function:
depolanır.
Geçerli Prompt
işlevi oluşturan betiği görüntülemek için şunu yazın:
(Get-Item function:prompt).ScriptBlock
Varsayılan istem
Varsayılan istem yalnızca işlev hata oluşturduğunda Prompt
veya nesne döndürmediğinde görüntülenir.
Varsayılan PowerShell istemi:
PS>
Örneğin, aşağıdaki komut işlevi $null
olarak ayarlar Prompt
ve bu geçersizdir. Sonuç olarak, varsayılan istem görüntülenir.
PS C:\> function prompt {$null}
PS>
PowerShell yerleşik bir istemle birlikte geldiğinden, genellikle varsayılan istemi görmezsiniz.
Yerleşik istem
PowerShell yerleşik Prompt
bir işlev içerir.
function prompt {
"PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
# .Link
# https://go.microsoft.com/fwlink/?LinkID=225750
# .ExternalHelp System.Management.Automation.dll-help.xml
}
işlevi, otomatik değişkenin Test-Path
bir değere sahip olup olmadığını $PSDebugContext
test etmek için cmdlet'ini kullanır. Bir değeri varsa $PSDebugContext
, hata ayıklama modunda çalıştırılırsınız ve [DBG]:
komut istemine aşağıdaki gibi eklenir:
[DBG]: PS C:\ps-test>
$PSDebugContext
Doldurulmazsa işlev istemine eklerPS
.
İşlev, geçerli dosya sistemi dizin konumunu almak için cmdlet'ini kullanır Get-Location
. Ardından sağ açılı ayraç (>
) ekler.
Örnek:
PS C:\ps-test>
İç içe bir istem içindeyseniz, işlev istemine iki açılı ayraç (>>
) ekler. Otomatik değişkenin değeri 0'dan büyükse iç içe yerleştirilmiş bir istem içindesiniz $NestedPromptLevel
.
Örneğin, iç içe bir komut isteminde hata ayıklarken, istem aşağıdaki istemine benzer:
[DBG] PS C:\ps-test>>>
İstemde yapılan değişiklikler
cmdlet'i Enter-PSSession
, uzak bilgisayarın adını geçerli Prompt
işleve ekler. Uzak bir bilgisayarla oturum başlatmak için cmdlet'ini kullandığınızda Enter-PSSession
, komut istemi uzak bilgisayarın adını içerecek şekilde değişir. Örnek:
PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>
Diğer PowerShell konak uygulamaları ve alternatif kabukların kendi özel komut istemleri olabilir.
ve otomatik değişkenleri hakkında $PSDebugContext
daha fazla bilgi için bkz. about_Automatic_Variables.$NestedPromptLevel
İstemi özelleştirme
İstemi özelleştirmek için yeni Prompt
bir işlev yazın. İşlev korunmaz, bu nedenle üzerine yazabilirsiniz.
İşlev Prompt
yazmak için aşağıdakileri yazın:
function prompt { }
Ardından ayraçların arasına komutlarını veya isteminizi oluşturan dizeyi girin.
Örneğin, aşağıdaki istem bilgisayarınızın adını içerir:
function prompt {"PS [$env:COMPUTERNAME]> "}
Server01 bilgisayarında, istem aşağıdaki istemine benzer:
PS [Server01] >
Aşağıdaki Prompt
işlev geçerli tarih ve saati içerir:
function prompt {"$(Get-Date)> "}
İstem aşağıdaki istem gibi görünür:
03/15/2012 17:49:47>
Varsayılan Prompt
işlevi de değiştirebilirsiniz:
Örneğin, aşağıdaki değiştirilmiş Prompt
işlev, yükseltilmiş bir oturumda çalışırken yerleşik PowerShell istemine ekler [ADMIN]:
.
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
elseif($principal.IsInRole($adminRole)) { "[ADMIN]: " }
else { '' }
) + 'PS ' + $(Get-Location) +
$(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}
PowerShell'i Yönetici olarak çalıştır seçeneğini kullanarak başlattığınızda, aşağıdaki istem gibi bir istem görüntülenir:
[ADMIN]: PS C:\ps-test>
Aşağıdaki Prompt
işlev, sonraki komutun geçmiş kimliğini görüntüler. Komut geçmişini görüntülemek için cmdlet'ini Get-History
kullanın.
function prompt {
# The at sign creates an array in case only one history item exists.
$history = @(Get-History)
if($history.Count -gt 0)
{
$lastItem = $history[$history.Count - 1]
$lastId = $lastItem.Id
}
$nextCommand = $lastId + 1
$currentDirectory = Get-Location
"PS: $nextCommand $currentDirectory >"
}
Aşağıdaki istem, renklerini rastgele değiştiren bir istem oluşturmak için ve Get-Random
cmdlet'lerini kullanırWrite-Host
. Write-Host
Geçerli konak uygulamasına yazdığından ancak nesne döndürmediğinden, bu işlev bir Return
deyimi içerir. Bu olmadan, PowerShell varsayılan istemini kullanır: PS>
.
function prompt {
$color = Get-Random -Min 1 -Max 16
Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
-ForegroundColor $Color
return " "
}
Prompt işlevini kaydetme
Herhangi bir işlev gibi işlev Prompt
de yalnızca geçerli oturumda bulunur. İşlevi Prompt
gelecek oturumlara kaydetmek için PowerShell profillerinize ekleyin. Profiller hakkında daha fazla bilgi için bkz. about_Profiles.