about_Prompts

Deskripsi singkat

Menjelaskan Prompt fungsi dan menunjukkan cara membuat fungsi kustom Prompt .

Deskripsi panjang

Prompt perintah PowerShell menunjukkan bahwa PowerShell siap untuk menjalankan perintah:

PS C:\>

PowerShell memiliki fungsi bawaan Prompt . Anda dapat menentukan fungsi kustomisasi Prompt Anda sendiri di skrip profil PowerShell Anda.

Tentang fungsi Prompt

Fungsi menentukan Prompt tampilan prompt PowerShell. PowerShell hadir dengan fungsi bawaan Prompt , tetapi Anda dapat mengambil alihnya dengan menentukan fungsi Anda sendiri Prompt .

Fungsi Prompt ini memiliki sintaks berikut:

function Prompt { <function-body> }

Fungsi Prompt harus mengembalikan objek. Sebagai praktik terbaik, kembalikan string atau objek yang diformat sebagai string. Panjang maksimum yang disarankan adalah 80 karakter.

Misalnya, fungsi berikut Prompt mengembalikan string "Hello, World" diikuti oleh kurung sudut kanan (>).

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

Mendapatkan fungsi Prompt

Untuk mendapatkan Prompt fungsi, gunakan Get-Command cmdlet atau gunakan Get-Item cmdlet di drive Fungsi.

Contohnya:

PS C:\> Get-Command Prompt

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

Untuk mendapatkan skrip yang mengatur nilai prompt, gunakan metode titik untuk mendapatkan properti ScriptBlock fungsi Prompt .

Contohnya:

(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

Seperti semua fungsi, Prompt fungsi disimpan di Function: drive. Untuk menampilkan skrip yang membuat fungsi saat ini Prompt , ketik:

(Get-Item function:prompt).ScriptBlock

Perintah default

Perintah default hanya muncul ketika Prompt fungsi menghasilkan kesalahan atau tidak mengembalikan objek.

Perintah PowerShell default adalah:

PS>

Misalnya, perintah berikut mengatur Prompt fungsi ke $null, yang tidak valid. Akibatnya, perintah default muncul.

PS C:\> function prompt {$null}
PS>

Karena PowerShell dilengkapi dengan perintah bawaan, Anda biasanya tidak melihat perintah default.

Perintah bawaan

PowerShell menyertakan fungsi bawaan Prompt .

function prompt {
  "PS $($executionContext.SessionState.Path.CurrentLocation)$('>' * ($nestedPromptLevel + 1)) ";
  # .Link
  # https://go.microsoft.com/fwlink/?LinkID=225750
  # .ExternalHelp System.Management.Automation.dll-help.xml
}

Fungsi ini menggunakan Test-Path cmdlet untuk menguji apakah $PSDebugContext variabel otomatis memiliki nilai. Jika $PSDebugContext memiliki nilai, Anda berjalan dalam mode penelusuran kesalahan, dan [DBG]: ditambahkan ke perintah, sebagai berikut:

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

Jika $PSDebugContext tidak diisi, fungsi akan ditambahkan PS ke perintah . Dan, fungsi ini menggunakan Get-Location cmdlet untuk mendapatkan lokasi direktori sistem file saat ini. Kemudian, ia menambahkan kurung sudut kanan (>).

Contohnya:

PS C:\ps-test>

Jika Anda berada dalam perintah berlapis, fungsi menambahkan dua tanda kurung sudut (>>) ke prompt. Anda berada dalam perintah berlapis jika nilai $NestedPromptLevel variabel otomatis lebih besar dari 0.

Misalnya, saat Anda menelusuri kesalahan dalam perintah berlapis, perintah menyerupai perintah berikut:

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

Perubahan pada perintah

Enter-PSSession Cmdlet menambahkan nama komputer jarak jauh ke fungsi saat iniPrompt. Saat Anda menggunakan Enter-PSSession cmdlet untuk memulai sesi dengan komputer jarak jauh, perintah berubah untuk menyertakan nama komputer jarak jauh. Contohnya:

PS Hello, World> Enter-PSSession Server01
[Server01]: PS Hello, World>

Aplikasi host PowerShell lainnya dan shell alternatif mungkin memiliki perintah kustom mereka sendiri.

Untuk informasi selengkapnya tentang $PSDebugContext variabel dan $NestedPromptLevel otomatis, lihat about_Automatic_Variables.

Cara mengkustomisasi perintah

Untuk mengkustomisasi perintah, tulis fungsi baru Prompt . Fungsi ini tidak dilindungi, sehingga Anda dapat menimpanya.

Untuk menulis Prompt fungsi, ketikkan yang berikut:

function prompt { }

Kemudian, di antara kurung kurawal, masukkan perintah atau string yang membuat prompt Anda.

Misalnya, perintah berikut menyertakan nama komputer Anda:

function prompt {"PS [$env:COMPUTERNAME]> "}

Di komputer Server01, perintah menyerupan perintah berikut:

PS [Server01] >

Fungsi berikut Prompt mencakup tanggal dan waktu saat ini:

function prompt {"$(Get-Date)> "}

Perintah menyerupan perintah berikut:

03/15/2012 17:49:47>

Anda juga dapat mengubah fungsi default Prompt :

Misalnya, fungsi yang dimodifikasi Prompt berikut menambahkan [ADMIN]: ke prompt PowerShell bawaan saat berjalan dalam sesi yang ditingkatkan.

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

Saat Anda memulai PowerShell menggunakan opsi Jalankan sebagai administrator , perintah yang menyerupan perintah berikut muncul:

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

Fungsi berikut Prompt menampilkan ID riwayat perintah berikutnya. Untuk melihat riwayat perintah, gunakan Get-History cmdlet .

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 >"
}

Perintah berikut menggunakan Write-Host cmdlet dan Get-Random untuk membuat perintah yang berubah warna secara acak. Karena Write-Host menulis ke aplikasi host saat ini tetapi tidak mengembalikan objek, fungsi ini menyertakan Return pernyataan. Tanpa itu, PowerShell menggunakan perintah default, PS>.

function prompt {
    $color = Get-Random -Min 1 -Max 16
    Write-Host ("PS " + $(Get-Location) +">") -NoNewLine `
     -ForegroundColor $Color
    return " "
}

Menyimpan fungsi Prompt

Seperti fungsi apa pun, Prompt fungsi hanya ada di sesi saat ini. Untuk menyimpan Prompt fungsi untuk sesi mendatang, tambahkan ke profil PowerShell Anda. Untuk informasi selengkapnya tentang profil, lihat about_Profiles.

Lihat juga