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 Prompt
yerleşik 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.
İşlev Prompt
aşağıdaki söz dizimine sahiptir:
function Prompt { <function-body> }
İşlev bir Prompt
nesne döndürmelidir. En iyi yöntem 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, World" dizesi ve ardından bir dik 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
.
Örneğin:
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.
Örneğin:
(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şlevlerde Prompt
olduğu 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 bir 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ğeri olup olmadığını test etmek için cmdlet'ini $PSDebugContext
kullanır. Bir değeri varsa $PSDebugContext
, hata ayıklama modunda çalışırsınız ve [DBG]:
isteme 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 dik açılı ayraç (>
) ekler.
Örneğin:
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 istem gibi görünür:
[DBG] PS C:\ps-test>>>
İstemde yapılan değişiklikler
Cmdlet, 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. Örneğin:
PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>
Diğer PowerShell konak uygulamalarının ve alternatif kabukların kendi özel komut istemleri olabilir.
ve $NestedPromptLevel
otomatik değişkenleri hakkında $PSDebugContext
daha fazla bilgi için bkz. about_Automatic_Variables.
İ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, küme ayraçlarını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 istem gibi görünür:
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ıştırılırken yerleşik PowerShell istemine eklenir [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 ve cmdlet'lerini kullanarak Write-Host
Get-Random
rengi rastgele değiştiren bir istem oluşturur. Write-Host
Geçerli konak uygulamasına yazdığından ancak bir 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
gelecekteki oturumlara kaydetmek için PowerShell profillerinize ekleyin. Profiller hakkında daha fazla bilgi için bkz . about_Profiles.
Ayrıca bkz.
PowerShell