about_Prompts

Deskripsi singkat

Menjelaskan Prompt fungsi dan menunjukkan cara membuat fungsi kustom Prompt .

Deskripsi panjang

Perintah PowerShell menunjukkan bahwa PowerShell siap menjalankan perintah:

PS C:\>

Perintah PowerShell ditentukan oleh fungsi bawaan Prompt . Anda dapat menyesuaikan perintah dengan membuat fungsi Anda sendiri Prompt dan menyimpannya di profil PowerShell Anda.

Tentang fungsi Prompt

Fungsi Prompt menentukan tampilan prompt PowerShell. PowerShell dilengkapi dengan fungsi bawaan Prompt , tetapi Anda dapat menggantinya 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 menetapkan nilai prompt, gunakan metode titik untuk mendapatkan properti ScriptBlock dari Prompt fungsi.

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 {
    $(if (Test-Path variable:/PSDebugContext) { '[DBG]: ' }
      else { '' }) + 'PS ' + $(Get-Location) +
        $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
}

Fungsi ini menggunakan Test-Path cmdlet untuk menentukan apakah $PSDebugContext variabel otomatis diisi. Jika $PSDebugContext diisi, Anda berada 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 men-debug di 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 kustomnya sendiri.

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

Cara mengkustomisasi perintah

Untuk menyesuaikan 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 perintah 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 PowerShell dibuka dengan menggunakan opsi Jalankan sebagai administrator :

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 dengan menggunakan opsi Jalankan sebagai administrator , perintah yang menyerupan perintah berikut ini 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