Aracılığıyla paylaş


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 $nullolarak 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.

Ayrıca bkz.