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