Aracılığıyla paylaş


about_Prompts

Kısa açıklama

prompt işlevini açıklar ve özel bir prompt işlevinin 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 bir prompt işlevi vardır. PowerShell profil betiğinizde kendi özelleştirilmiş prompt işlevinizi tanımlayabilirsiniz.

İşlev hakkında prompt

prompt işlevi, PowerShell isteminin görünümünü belirler. PowerShell yerleşik bir prompt işleviyle birlikte gelir, ancak kendi prompt işlevinizi tanımlayarak bunu geçersiz kılabilirsiniz.

prompt işlevinin söz dizimi aşağıdaki gibidir:

function prompt { <function-body> }

prompt işlevi bir 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şlevi bir "Hello, World" dizesi ve ardından sağ köşeli ayraç (>) döndürür.

PS C:\> function prompt {"Hello, World > "}
Hello, World >

prompt işlevini alma

prompt işlevini almak için Get-Command cmdlet'ini veya İşlev sürücüsündeki Get-Item cmdlet'ini kullanın.

Mesela:

PS C:\> Get-Command prompt

CommandType     Name      ModuleName
-----------     ----      ----------
Function        prompt

İstem değerini ayarlayan betiği almak için dot yöntemini kullanarak işlevinin prompt özelliğini alın.

Mesela:

(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 olduğu gibi prompt işlevi de Function: sürücüde depolanır. Geçerli prompt işlevini 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 prompt işlevi bir hata oluşturduğunda veya nesne döndürmediğinde görüntülenir.

Varsayılan PowerShell istemi:

PS>

Örneğin, aşağıdaki komut prompt işlevini geçersiz olan $nullolarak ayarlar. 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 bir prompt işlevi 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
}

İşlev, Test-Path otomatik değişkenin bir değeri olup olmadığını test etmek için $PSDebugContext cmdlet'ini kullanır. $PSDebugContext bir değere sahipse hata ayıklama modunda çalıştırılırsınız ve istemde aşağıdaki gibi [DBG]: eklenir:

[DBG]: PS C:\ps-test>

$PSDebugContext doldurulmazsa, işlev istemine PS ekler. İşlev, geçerli dosya sistemi dizin konumunu almak için Get-Location cmdlet'ini kullanır. Ardından dik açılı ayraç (>) ekler.

Mesela:

PS C:\ps-test>

İç içe bir istem içindeyseniz, işlev istemine iki açılı ayraç (>>) ekler. $NestedPromptLevel otomatik değişkeninin değeri 0'dan büyükse iç içe yerleştirilmiş bir istem içindesiniz.

Ö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

Enter-PSSession cmdlet'i uzak bilgisayarın adını geçerli prompt işlevine ekler. Uzak bir bilgisayarla oturum başlatmak için Enter-PSSession cmdlet'ini kullandığınızda, komut istemi uzak bilgisayarın adını içerecek şekilde değişir. Mesela:

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.

$PSDebugContext ve $NestedPromptLevel otomatik değişkenleri hakkında daha fazla bilgi için bkz. about_Automatic_Variables.

İstemi özelleştirme

İstemi özelleştirmek için yeni bir prompt işlevi yazın. İşlev korunmaz, bu nedenle üzerine yazabilirsiniz.

bir prompt işlevi 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şlevi 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şlevini de değiştirebilirsiniz:

Örneğin, aşağıdaki değiştirilmiş prompt işlevi, yükseltilmiş bir oturumda çalışırken yerleşik PowerShell istemine [ADMIN]: ekler.

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) { '>>' }) + '> '
}

Yönetici olarak çalıştır seçeneğini kullanarak PowerShell'i 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şlevi, sonraki komutun geçmiş kimliğini görüntüler. Komut geçmişini görüntülemek için Get-History cmdlet'ini 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, rengi rastgele değiştiren bir istem oluşturmak için Write-Host ve Get-Random cmdlet'lerini kullanır. Write-Host geçerli konak uygulamasına yazdığından ancak nesne döndürmediğinden, bu işlev bir return deyimi içerir. PowerShell, bu olmadan PS>varsayılan istemini kullanır.

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, prompt işlevi de yalnızca geçerli oturumda bulunur. gelecekteki oturumlarda prompt işlevini kaydetmek için powershell profillerinize ekleyin. Profiller hakkında daha fazla bilgi için bkz. about_Profiles.

Ayrıca bakınız