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.