Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
PSReadLine, PowerShell konsolunda gelişmiş bir komut satırı düzenleme deneyimi sağlar.
Uzun açıklama
Windows PowerShell 5.1'de gelen sürümden bu yana PSReadLine'da birçok güncelleştirme yapılmıştır.
- v2.3.6 ilk olarak PowerShell 7.4.7 ve 7.5.0'da gönderildi
- v2.3.5 ilk olarak PowerShell 7.4.2 ve 7.5.0-preview.3 sürümünde gönderildi
- v2.3.4 ilk olarak PowerShell 7.4.0-rc.1'de gönderildi
- v2.2.6 ilk olarak PowerShell 7.3.0'da gönderildi
- v2.1.0 ilk olarak PowerShell 7.2.5'te gönderildi
- v2.0.4 ilk olarak PowerShell 7.0.11'de gönderildi
- v2.0.0, Windows PowerShell 5.1'de kullanıma sunar
Sürüm farklılıkları hakkında daha fazla bilgi için bkz . about_PSReadLine_Release_Notes.
PSReadLine'ın geçerli sürümü Windows PowerShell 5.1 ve daha yeni sürümlerde yüklenebilir ve kullanılabilir. Bazı özellikler için PowerShell 7.2 veya üzerini çalıştırıyor olmanız gerekir.
PSReadLine, PowerShell konsolu için güçlü bir komut satırı düzenleme deneyimi sağlar. Şunları sağlar:
- Komut satırının söz dizimi renklendirmesi
- Söz dizimi hatalarının görsel göstergesi
- Daha iyi bir çok satırlı deneyim (hem düzenleme hem de geçmiş)
- Özelleştirilebilir anahtar bağlamaları
- Cmd ve Emacs modları
- Birçok yapılandırma seçeneği
- Bash stili tamamlama (Cmd modunda isteğe bağlı, Emacs modunda varsayılan)
- Emacs yank/kill-ring
- PowerShell belirteci tabanlı "sözcük" taşıma ve silme
- Tahmine Dayalı IntelliSense
- Komut satırındaki yerinizi kaybetmeden konsolunda Yardım'ın dinamik görüntüsü
PSReadLine için PowerShell 5.1 veya daha yeni bir sürüm gerekir. PSReadLine varsayılan Windows konsol konağı, Windows Terminali ve Visual Studio Code ile çalışır. Windows PowerShell ISE'de çalışmaz.
PSReadLine PowerShell Galerisi yüklenebilir. PSReadLine'ı PowerShell'in desteklenen bir sürümüne yüklemek için aşağıdaki komutu çalıştırın.
Install-Module -Name PSReadLine -AllowClobber -Force
Not
PowerShell 7.0 sürümünden itibaren, bir ekran okuyucu programı algılanırsa PowerShell, Windows'ta PSReadLine'ı otomatik yüklemeyi atlar. Şu anda PSReadLine, ekran okuyucularla iyi çalışmıyor. Windows'ta PowerShell 7.0'ın varsayılan işleme ve biçimlendirmesi düzgün çalışır. Gerekirse modülü el ile yükleyebilirsiniz.
Tahmine Dayalı IntelliSense
Tahmine dayalı IntelliSense, kullanıcının komutları başarıyla tamamlamasına yardımcı olan sekme tamamlama kavramına bir ektir. Kullanıcıların, kullanıcının geçmişinden ve ek etki alanına özgü eklentilerden gelen eşleşen tahminlere göre tam komutları bulmasına, düzenlemesine ve yürütmesine olanak tanır.
Tahmine Dayalı IntelliSense'i etkinleştirme
Tahmine dayalı IntelliSense varsayılan olarak devre dışıdır. Tahminleri etkinleştirmek için aşağıdaki komutu çalıştırmanız gerekir:
Set-PSReadLineOption -PredictionSource History
PredictionSource parametresi, etki alanına özgü ve özel gereksinimler için eklentileri de kabul edebilir.
Tahmine Dayalı IntelliSense'i devre dışı bırakmak için şunu çalıştırmanız gerekir:
Set-PSReadLineOption -PredictionSource None
Özel anahtar bağlamaları
PSReadLine, cmdlet'ini Set-PSReadLineKeyHandler kullanarak özel anahtar bağlamalarını destekler. Çoğu özel anahtar bağlaması bağlanabilir işlevlerden birini çağırır, örneğin
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
ScriptBlock'ı bir anahtara bağlayabilirsiniz. ScriptBlock istediğiniz her şeyi yapabilir. Bazı yararlı örnekler şunlardır:
- komut satırını düzenleme
- yeni bir pencere açma (örneğin, yardım)
- komut satırını değiştirmeden dizinleri değiştirme
ScriptBlock iki bağımsız değişken alır:
$key- Özel bağlamayı tetikleyen anahtar olan [ConsoleKeyInfo] nesnesi. Aynı ScriptBlock'ı birden çok anahtara bağlarsanız ve anahtara bağlı olarak farklı eylemler gerçekleştirmeniz gerekiyorsa, öğesini de kontrol$keyedebilirsiniz. Birçok özel bağlama bu bağımsız değişkeni yoksayar.$arg- Rastgele bir bağımsız değişken. Çoğu zaman bu, kullanıcının DigitArgument anahtar bağlamalarından geçirdiği bir tamsayı bağımsız değişkeni olacaktır. Bağlamanız bağımsız değişkenleri kabul etmiyorsa, bu bağımsız değişkeni yoksaymak mantıklıdır.
Şimdi yürütmeden geçmişe komut satırı ekleyen bir örneğe göz atalım. Bu, bir şey yapmayı unuttuğunu ancak daha önce girdiğiniz komut satırını yeniden girmek istemediğinizi fark ettiğinizde kullanışlıdır.
$parameters = @{
Key = 'Alt+w'
BriefDescription = 'SaveInHistory'
LongDescription = 'Save current line in history but do not execute'
ScriptBlock = {
param($key, $arg) # The arguments are ignored in this example
# GetBufferState gives us the command line (with the cursor position)
$line = $null
$cursor = $null
[Microsoft.PowerShell.PSConsoleReadLine]::GetBufferState([ref]$line,
[ref]$cursor)
# AddToHistory saves the line in history, but does not execute it.
[Microsoft.PowerShell.PSConsoleReadLine]::AddToHistory($line)
# RevertLine is like pressing Escape.
[Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
}
}
Set-PSReadLineKeyHandler @parameters
PSReadLineSamplePSReadLineProfile.ps1olan dosyasında daha birçok örnek görebilirsiniz.
Çoğu anahtar bağlaması, komut satırını düzenlemek için bazı yardımcı işlevler kullanır. Bu API'ler about_PSReadLine_Functions belgelenmiştir.
Notes
Komut Geçmişi
PSReadLine, komut satırından girdiğiniz tüm komutları ve verileri içeren bir geçmiş dosyası tutar. Geçmiş dosyası adlı $($Host.Name)_history.txtbir dosyadır ve her konak için benzersiz bir dosyayla sonuçlanır. Örneğin, Visual Studio Code'da PowerShell Uzantısı konsolunun geçmiş dosyası şeklindedir Visual Studio Code Host_history.txt.
- Windows sistemlerinde, geçmiş dosyası konumunda
$Env:APPDATA\Microsoft\Windows\PowerShell\PSReadLinedepolanır. - Windows olmayan sistemlerde, geçmiş dosyaları veya
$Env:XDG_DATA_HOME/powershell/PSReadLinekonumunda$Env:HOME/.local/share/powershell/PSReadLinedepolanır.
Geçmiş, parolalar da dahil olmak üzere hassas veriler içerebilir. PSReadLine hassas bilgileri filtrelemeyi dener. Aşağıdaki dizeleri içeren komut satırları geçmiş dosyasına yazılamaz.
passwordasplaintexttokenapikeysecret
PSReadLine 2.2.0 hassas verilerin filtrelenmesinde iyileştirmeler
- Hassas verileri aramak için ayrıştırılan komut satırının PowerShell Soyut Söz Dizimi Ağacı'nı (AST) kullanır.
- Bu komutların geçmişe eklenmesine izin vermek için SecretManagement modülündeki güvenli cmdlet'lerin izin verilenler listesini kullanır. İzin verilenler listesi şunları içerir:
Get-SecretGet-SecretInfoGet-SecretVaultRegister-SecretVaultRemove-SecretSet-SecretInfoSet-SecretVaultDefaultTest-SecretVaultUnlock-SecretVaultUnregister-SecretVault
Örneğin, aşağıdaki komutların geçmiş dosyasına yazılmasına izin verilir:
Get-Secret PSGalleryApiKey -AsPlainText # Get-Secret is in the allowlist
$token = Get-Secret -Name github-token -Vault MySecret
[MyType]::CallRestAPI($token, $url, $args)
$template -f $token
Aşağıdaki komutlar geçmiş dosyasına yazılmıyor:
$token = 'abcd' # Assign expr-value to sensitive variable name.
Set-Secret abc $mySecret # Set-Secret is not in the allowlist.
ConvertTo-SecureString stringValue -AsPlainText # '-AsPlainText' is an alert.
Invoke-WebRequest -Token xxx # Expr-value as argument to '-Token'.
Get-ResultFromTwo -Secret1 (Get-Secret -Name blah -AsPlainText) -Secret2 sdv87ysdfayf798hfasd8f7ha # '-Secret2' has expr-value argument.
Geçmiş dosyalarına yazılmasını istemediğiniz başka komutlar varsa, cmdlet'in AddToHistoryHandlerSet-PSReadLineOption. AddToHistoryHandler'ın nasıl kullanılacağına ilişkin bir örnek için bkz. Set-PSReadLineOption Örneği 7.
PSReadLine 2.3.4, hassas verilerin filtrelenmesinde iyileştirmeler sağlar
Geçmişin güvenli özellik erişimi içermesine izin vermek için varsayılan hassas geçmiş temizleme geliştirildi.
Hassas dize bir özellik erişiminin parçası olduğunda:
- Bu üye erişim işlemi bir atamanın parçası değilse bunu güvenli olarak değerlendiririz
- Aksi takdirde, sağ taraf bir işlem hattı veya değişkense, bunu güvenli olarak da değerlendiririz
Örneğin, aşağıdaki kullanım örnekleri güvenli olarak kabul edilir ve geçmişe kaydedilebilir.
$a.Secret = Get-Secret -Name github-token -Vault MySecret
$a.Secret = $secret
$a.Password.Secret | Set-Value
$token = (Get-AzAccessToken -ResourceUrl 'https://app.contoso.com').Token
Sürüm ayrıca, , azve gcloud komut satırı araçlarını kullanarak belirtecin alınmasına izin vermek için hassas geçmiş temizlemeyi kubectlgeliştirdi.
Örneğin, aşağıdaki kullanım örnekleri güvenli olarak kabul edilir ve geçmişe kaydedilebilir.
kubectl get secrets
kubectl get secret db-user-pass -o jsonpath='{.data.password}' | base64 --decode
kubectl describe secret db-user-pass
az account get-access-token --resource=https://app.contoso.com --query accessToken --output tsv
$Env:PGPASS = gcloud auth print-access-token
Geri bildirim ve PSReadLine'a katkıda bulunma
GitHub sayfasında çekme isteği göndermek veya geri bildirim göndermekte çekinmeyin.
Ayrıca bakınız
- PSReadLine, GNU okuma çizgisi kitaplığından büyük ölçüde etkilenir.
PowerShell