Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskripsi singkat
Menjelaskan fungsi prompt dan menunjukkan cara membuat fungsi prompt kustom.
Deskripsi panjang
Prompt perintah PowerShell menunjukkan bahwa PowerShell siap untuk menjalankan perintah:
PS C:\>
PowerShell memiliki fungsi prompt bawaan. Anda dapat menentukan fungsi prompt yang disesuaikan sendiri di skrip profil PowerShell Anda.
prompt Tentang fungsi
Fungsi prompt menentukan tampilan prompt PowerShell.
PowerShell dilengkapi dengan fungsi prompt bawaan, tetapi Anda dapat mengambil alihnya dengan menentukan fungsi prompt Anda sendiri.
Fungsi prompt 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 prompt berikut mengembalikan string "Hello, World" diikuti dengan kurung sudut kanan (>).
PS C:\> function prompt {"Hello, World > "}
Hello, World >
Mendapatkan fungsi prompt
Untuk mendapatkan fungsi prompt, gunakan cmdlet Get-Command atau gunakan cmdlet Get-Item di drive Fungsi.
Misalnya:
PS C:\> Get-Command prompt
CommandType Name ModuleName
----------- ---- ----------
Function prompt
Untuk mendapatkan skrip yang mengatur nilai prompt, gunakan metode titik untuk mendapatkan properti ScriptBlock dari fungsi prompt.
Misalnya:
(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, fungsi prompt disimpan di drive Function:.
Untuk menampilkan skrip yang membuat fungsi prompt saat ini, ketik:
(Get-Item Function:prompt).ScriptBlock
Perintah default
Perintah default hanya muncul ketika fungsi prompt menghasilkan kesalahan atau tidak mengembalikan objek.
Perintah PowerShell default adalah:
PS>
Misalnya, perintah berikut mengatur fungsi prompt 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 prompt bawaan.
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 cmdlet Test-Path untuk menguji apakah variabel otomatis $PSDebugContext 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 menambahkan PS ke prompt.
Dan, fungsi ini menggunakan cmdlet Get-Location untuk mendapatkan lokasi direktori sistem file saat ini. Kemudian, ia menambahkan kurung sudut kanan (>).
Misalnya:
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 variabel otomatis $NestedPromptLevel lebih besar dari 0.
Misalnya, saat Anda menelusuri kesalahan dalam perintah berlapis, perintah menyerupai perintah berikut:
[DBG] PS C:\ps-test>>>
Perubahan pada perintah
cmdlet Enter-PSSession menambahkan nama komputer jarak jauh ke fungsi prompt saat ini. Saat Anda menggunakan cmdlet Enter-PSSession untuk memulai sesi dengan komputer jarak jauh, perintah berubah untuk menyertakan nama komputer jarak jauh. Misalnya:
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 variabel otomatis $PSDebugContext dan $NestedPromptLevel, lihat about_Automatic_Variables.
Cara mengkustomisasi perintah
Untuk menyesuaikan perintah, tulis fungsi prompt baru. Fungsi ini tidak dilindungi, sehingga Anda dapat menimpanya.
Untuk menulis fungsi prompt, 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 prompt berikut 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 prompt default:
Misalnya, fungsi prompt yang dimodifikasi 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 prompt berikut menampilkan ID riwayat perintah berikutnya. Untuk melihat riwayat perintah, gunakan cmdlet Get-History.
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 cmdlet Write-Host dan Get-Random untuk membuat permintaan yang berubah warna secara acak. Karena Write-Host menulis ke aplikasi host saat ini tetapi tidak mengembalikan objek, fungsi ini menyertakan pernyataan return. 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, fungsi prompt hanya ada di sesi saat ini. Untuk menyimpan fungsi prompt untuk sesi mendatang, tambahkan ke profil PowerShell Anda. Untuk informasi selengkapnya tentang profil, lihat about_Profiles.
Lihat juga
- about_Automatic_Variables
- about_Debuggers
- about_Functions
- about_Profiles
- about_Scopes
- Get-History
- Write-Host
- Get-Location
- Enter-PSSession
- Get-Random