Kabuk ortamınızı özelleştirme
PowerShell profili, PowerShell başlatıldığında çalışan bir komut dosyasıdır. Ortamı özelleştirmek için profili kullanabilirsiniz. Yapabilirsiniz:
- takma adlar, işlevler ve değişkenler ekleme
- yük modülleri
- PowerShell sürücüleri oluşturma
- rastgele komutları çalıştır
- ve tercih ayarlarını değiştirin
Bu ayarları profilinize koymak, sisteminizde PowerShell'i her başlattığınızda bunların kullanılabilir olmasını sağlar.
Not
Komut dosyalarını Windows'ta çalıştırmak için PowerShell yürütme ilkesinin en azından RemoteSigned olarak ayarlanması gerekir. Yürütme politikaları macOS ve Linux için geçerli değildir. Daha fazla bilgi için bkz. about_Execution_Policy.
$PROFILE değişkeni
$PROFILE otomatik değişkeni, geçerli oturumda kullanılabilen PowerShell profillerinin yollarını saklar.
Farklı kullanıcı kapsamlarını ve farklı PowerShell ana bilgisayarlarını desteklemek için dört olası profil mevcuttur. Her profil komut dosyasına ilişkin tam yollar, $PROFILE'ın aşağıdaki üye özelliklerinde saklanır.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Tüm kullanıcılar için veya yalnızca tek bir kullanıcı olan CurrentUser için çalışan profil komut dosyaları oluşturabilirsiniz. Geçerli Kullanıcı profilleri kullanıcının ana dizininde saklanır.
Ayrıca tüm PowerShell ana bilgisayarları veya belirli ana bilgisayarlar için çalışan profiller de vardır. Her PowerShell ana bilgisayarının profil komut dosyasının o ana bilgisayar için benzersiz bir adı vardır. Örneğin, Windows'taki standart Konsol Ana Bilgisayarının veya diğer platformlardaki varsayılan terminal uygulamasının dosya adı Microsoft.PowerShell_profile.ps1'dir. Visual Studio Code (VS Code) için dosya adı Microsoft.VSCode_profile.ps1'dir.
Daha fazla bilgi için bkz. about_Profiles.
Varsayılan olarak, $PROFILE değişkenine başvurulması, "Geçerli Kullanıcı, Geçerli Ana Bilgisayar" profilinin yolunu döndürür. Diğer profillerin yoluna $PROFILE değişkeninin özellikleri 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 nasıl oluşturabilirsiniz?
PowerShell'i bir sisteme ilk yüklediğinizde profil betik dosyaları ve ait oldukları dizinler mevcut değildir. Aşağıdaki komut, mevcut değilse "Geçerli Kullanıcı, Geçerli Geçerli Ana Bilgisayar" profil komut dosyası dosyasını oluşturur.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
New-Item cmdlet'inin Force parametresi, mevcut olmadığında gerekli klasörleri oluşturur. Betik dosyasını oluşturduktan sonra, kabuk ortamınızı özelleştirmek için favori düzenleyicinizi kullanabilirsiniz.
Profilinize özelleştirmeler ekleme
Önceki makalelerde sekme tamamlama, komut tahmincileri ve takma adların kullanımından bahsediliyordu. Bu makaleler gerekli modülleri yüklemek, özel tamamlayıcılar oluşturmak, tuş atamalarını tanımlamak ve diğer ayarları yapmak için kullanılan komutları gösteriyordu. Bunlar, her PowerShell etkileşimli oturumunda bulunmasını istediğiniz özelleştirme türleridir. Profil komut dosyası bu ayarların yeridir.
Profil komut dosyanızı düzenlemenin en basit yolu, dosyayı favori kod düzenleyicinizde açmaktır. Örneğin, aşağıdaki komut profili VS Code'da açar.
code $PROFILE
Ayrıca Windows'ta notepad.exe'yi, Linux'ta vi'yi veya başka herhangi bir metin düzenleyiciyi de kullanabilirsiniz.
Aşağıdaki profil komut dosyasında önceki makalelerde bahsedilen özelleştirmelerin çoğuna yönelik örnekler bulunmaktadır. 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]: ' }
elseif ($principal.IsInRole($adminRole)) { "[ADMIN]: " }
else { '' })
$body = 'PS ' + $(Get-Location)
$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 komut dosyası aşağıdaki özelleştirmeye yönelik ö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 bilgi istemi oluşturur.
- PSReadLine'ı yapılandırır ve tuş bağlamayı ekler. Renk ayarları, ANSI renk ayarlarını tanımlamak için $PSStyle özelliğini kullanır.
- Dotnet CLI aracı için sekme tamamlama özelliği ekler. Araç, komut satırı argümanlarının çözülmesine yardımcı olacak parametreler sağlar. Register-ArgumentCompleter'ın komut dosyası bloğu, sekmenin tamamlanmasını sağlamak için bu özelliği kullanır.