Kabuk ortamınızı özelleştirme
PowerShell profili, PowerShell başlatıldığında çalışan bir betiktir. Ortamı özelleştirmek için profili kullanabilirsiniz. Şunları yapabilirsiniz:
- diğer adlar, işlevler ve değişkenler ekleme
- modülleri yükleme
- PowerShell sürücüleri oluşturma
- rastgele komutlar çalıştırma
- ve tercih ayarlarını değiştirme
Bu ayarları profilinize yerleştirmek, sisteminizde PowerShell'i her başlattığınızda bunların kullanılabilir olmasını sağlar.
Not
Windows'da betikleri çalıştırmak için PowerShell yürütme ilkesinin en az olarak ayarlanması RemoteSigned
gerekir. Yürütme ilkeleri macOS ve Linux için geçerli değildir. Daha fazla bilgi için bkz . about_Execution_Policy.
$PROFILE değişkeni
Otomatik değişken, $PROFILE
geçerli oturumda kullanılabilen PowerShell profillerinin yollarını depolar.
Farklı kullanıcı kapsamlarını ve farklı PowerShell konaklarını desteklemek için dört olası profil vardır. Her profil betiğinin tam yolları aşağıdaki üye özelliklerinde $PROFILE
depolanır.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Tüm kullanıcılar veya yalnızca bir kullanıcı (CurrentUser) için çalışan profil betikleri oluşturabilirsiniz. CurrentUser profilleri kullanıcının giriş dizininde depolanır.
Tüm PowerShell konakları veya belirli konaklar için çalışan profiller de vardır. Her PowerShell konağı için profil betiği, bu konak için benzersiz bir ada sahiptir. Örneğin, Windows'ta standart Konsol Konağı'nın veya diğer platformlardaki varsayılan terminal uygulamasının dosya adı şeklindedir Microsoft.PowerShell_profile.ps1
. Visual Studio Code (VS Code) için dosya adı şeklindedir Microsoft.VSCode_profile.ps1
.
Daha fazla bilgi için bkz . about_Profiles.
Varsayılan olarak, değişkene $PROFILE
başvuruda bulunmak "Geçerli Kullanıcı, Geçerli Ana Bilgisayar" profilinin yolunu döndürür. Diğer profiller yoluna değişkenin özellikleri $PROFILE
aracılığıyla erişilebilir.
Örneğin:
PS> $PROFILE
C:\Users\user1\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
PS> $PROFILE.AllUsersAllHosts
C:\Program Files\PowerShell\7\profile.ps1
Kişisel profilinizi oluşturma
PowerShell'i bir sisteme ilk yüklediğinizde, profil betiği dosyaları ve ait oldukları dizinler mevcut değildir. Aşağıdaki komut, yoksa "Geçerli Kullanıcı, Geçerli Geçerli Ana Bilgisayar" profil betiği dosyasını oluşturur.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
cmdlet'in New-Item
Force parametresi, mevcut olmayan gerekli klasörleri oluşturur.
Betik dosyasını oluşturduktan sonra, kabuk ortamınızı özelleştirmek için sık kullandığınız düzenleyiciyi kullanabilirsiniz.
Profilinize özelleştirme ekleme
Önceki makalelerde sekme tamamlama, komut tahminleri ve diğer adları kullanma hakkında konuşuluyordu. Bu makalelerde gerekli modülleri yüklemek, özel tamamlayıcılar oluşturmak, anahtar bağlamaları ve diğer ayarları tanımlamak için kullanılan komutlar gösterildi. Bunlar, her PowerShell etkileşimli oturumunda kullanılabilir olmasını istediğiniz özelleştirme türleridir. Profil betiği bu ayarların yeridir.
Profil betiğinizi düzenlemenin en basit yolu, dosyayı sık kullandığınız kod düzenleyicisinde açmaktır. Örneğin, aşağıdaki komut profili VS Code'da açar.
code $PROFILE
Ayrıca Windows, vi
Linux veya başka bir metin düzenleyicisinde de kullanabilirsiniznotepad.exe
.
Aşağıdaki profil betiğinde, önceki makalelerde bahsedilen özelleştirmelerin çoğu için örnekler verilmiştir. Bu ayarlardan herhangi birini kendi profilinizde kullanabilirsiniz.
## 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
Bu profil betiği aşağıdaki özelleştirme için örnekler sağlar:
- Diğer kök kayıt defteri kovanları için iki yeni PSDrive ekler.
- Yükseltilmiş bir oturumda çalışıyorsanız değişen özelleştirilmiş bir istem oluşturur.
- PSReadLine'ı yapılandırıp anahtar bağlama ekler. Renk ayarları, ANSI renk ayarlarını tanımlamak için $PSStyle özelliğini kullanır.
- dotnet CLI aracı için sekme tamamlama ekler. Araç, komut satırı bağımsız değişkenlerini çözmeye yardımcı olacak parametreler sağlar. Register-ArgumentCompleter için betik bloğu, sekmenin tamamlanmasını sağlamak için bu özelliği kullanır.
PowerShell