Menyesuaikan lingkungan shell Anda
Profil PowerShell adalah skrip yang berjalan saat PowerShell dimulai. Anda dapat menggunakan profil untuk menyesuaikan lingkungan. Anda dapat:
- menambahkan alias, fungsi, dan variabel
- memuat modul
- membuat drive PowerShell
- menjalankan perintah arbitrer
- dan mengubah pengaturan preferensi
Menempatkan pengaturan ini di profil Anda memastikan bahwa pengaturan tersebut tersedia setiap kali Anda memulai PowerShell di sistem Anda.
Catatan
Untuk menjalankan skrip di Windows, kebijakan eksekusi PowerShell perlu diatur ke RemoteSigned
minimal. Kebijakan eksekusi tidak berlaku untuk macOS dan Linux. Untuk informasi selengkapnya, lihat about_Execution_Policy.
Variabel $PROFILE
Variabel $PROFILE
otomatis menyimpan jalur ke profil PowerShell yang tersedia dalam sesi saat ini.
Ada empat kemungkinan profil yang tersedia untuk mendukung cakupan pengguna yang berbeda dan host PowerShell yang berbeda. Jalur yang sepenuhnya memenuhi syarat untuk setiap skrip profil disimpan di properti anggota berikut dari $PROFILE
.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Anda dapat membuat skrip profil yang berjalan untuk semua pengguna atau hanya satu pengguna, CurrentUser. Profil CurrentUser disimpan di direktori beranda pengguna.
Ada juga profil yang berjalan untuk semua host PowerShell atau host tertentu. Skrip profil untuk setiap host PowerShell memiliki nama yang unik untuk host tersebut. Misalnya, nama file untuk Host Konsol standar di Windows atau aplikasi terminal default di platform lain adalah Microsoft.PowerShell_profile.ps1
. Untuk Visual Studio Code (VS Code), nama filenya adalah Microsoft.VSCode_profile.ps1
.
Untuk informasi selengkapnya, lihat about_Profiles.
Secara default, merujuk $PROFILE
variabel mengembalikan jalur ke profil "Pengguna Saat Ini, Host Saat Ini". Jalur profil lainnya dapat diakses melalui properti $PROFILE
variabel.
Contohnya:
PS> $PROFILE
C:\Users\user1\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
PS> $PROFILE.AllUsersAllHosts
C:\Program Files\PowerShell\7\profile.ps1
Cara membuat profil pribadi Anda
Ketika Anda pertama kali menginstal PowerShell pada sistem, file skrip profil dan direktori miliknya tidak ada. Perintah berikut membuat file skrip profil "Pengguna Saat Ini, Host Saat Ini" jika tidak ada.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
Parameter New-Item
Paksa cmdlet membuat folder yang diperlukan saat tidak ada.
Setelah membuat file skrip, Anda dapat menggunakan editor favorit untuk menyesuaikan lingkungan shell Anda.
Menambahkan kustomisasi ke profil Anda
Artikel sebelumnya berbicara tentang menggunakan penyelesaian tab, prediktor perintah, dan alias. Artikel ini menunjukkan perintah yang digunakan untuk memuat modul yang diperlukan, membuat penyelesaian kustom, menentukan keybinding, dan pengaturan lainnya. Ini adalah jenis kustomisasi yang ingin Anda miliki tersedia di setiap sesi interaktif PowerShell. Skrip profil adalah tempat untuk pengaturan ini.
Cara paling sederhana untuk mengedit skrip profil Anda adalah dengan membuka file di editor kode favorit Anda. Misalnya, perintah berikut membuka profil di Visual Studio Code.
code $PROFILE
Anda juga dapat menggunakan notepad.exe
di Windows, vi
di Linux, atau editor teks lainnya.
Skrip profil berikut memiliki contoh untuk banyak kustomisasi yang disebutkan dalam artikel sebelumnya. Anda dapat menggunakan salah satu pengaturan ini di profil Anda sendiri.
## Map PSDrives to other registry hives
if (!(Test-Path HKCR:)) {
$null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
}
## Customize the prompt
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$prefix = if (Test-Path variable:/PSDebugContext) { '[DBG]: ' } else { '' }
if ($principal.IsInRole($adminRole)) {
$prefix = "[ADMIN]:$prefix"
}
$body = 'PS ' + $PWD.path
$suffix = $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
"${prefix}${body}${suffix}"
}
## Create $PSStyle if running on a version older than 7.2
## - Add other ANSI color definitions as needed
if ($PSVersionTable.PSVersion.ToString() -lt '7.2.0') {
# define escape char since "`e" may not be supported
$esc = [char]0x1b
$PSStyle = [pscustomobject]@{
Foreground = @{
Magenta = "${esc}[35m"
BrightYellow = "${esc}[93m"
}
Background = @{
BrightBlack = "${esc}[100m"
}
}
}
## Set PSReadLine options and keybindings
$PSROptions = @{
ContinuationPrompt = ' '
Colors = @{
Operator = $PSStyle.Foreground.Magenta
Parameter = $PSStyle.Foreground.Magenta
Selection = $PSStyle.Background.BrightBlack
InLinePrediction = $PSStyle.Foreground.BrightYellow + $PSStyle.Background.BrightBlack
}
}
Set-PSReadLineOption @PSROptions
Set-PSReadLineKeyHandler -Chord 'Ctrl+f' -Function ForwardWord
Set-PSReadLineKeyHandler -Chord 'Enter' -Function ValidateAndAcceptLine
## Add argument completer for the dotnet CLI tool
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() |
ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Skrip profil ini menyediakan contoh untuk kustomisasi berikut:
- Menambahkan dua PSDrive baru untuk sarang registri akar lainnya.
- Membuat perintah yang dikustomisasi yang berubah jika Anda berjalan dalam sesi yang ditingkatkan.
- Mengonfigurasi PSReadLine dan menambahkan keybinding. Pengaturan warna menggunakan fitur $PSStyle untuk menentukan pengaturan warna ANSI.
- Menambahkan penyelesaian tab untuk alat CLI dotnet. Alat ini menyediakan parameter untuk membantu menyelesaikan argumen baris perintah. Blok skrip untuk Register-ArgumentCompleter menggunakan fitur tersebut untuk menyediakan penyelesaian tab.