about_PSReadLine
Kısa Açıklama
PSReadLine, PowerShell konsolunda gelişmiş bir komut satırı düzenleme deneyimi sağlar.
Uzun Açıklama
PowerShell 7.4, PSReadLine 2.3.4 ile birlikte gösterilir. Geçerli sürüm PSReadLine 2.3.4'dür. 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
Not
PSReadLine 2.2.6'da tahmine dayalı IntelliSense varsayılan olarak etkindir. Daha fazla bilgi için aşağıdaki Notlar bölümündeki PSReadLine sürüm geçmişine bakın.
Ö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$key
edebilirsiniz. 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
PSReadLine modül klasöründe yüklü olan dosyasında SamplePSReadLineProfile.ps1
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.
Notlar
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ş dosyaları adlı $($host.Name)_history.txt
bir dosyadır. Windows sistemlerinde geçmiş dosyası konumunda $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
depolanır. Windows olmayan sistemlerde, geçmiş dosyaları veya $env:HOME/.local/share/powershell/PSReadLine
konumunda $env:XDG_DATA_HOME/powershell/PSReadLine
depolanı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.
password
asplaintext
token
apikey
secret
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-Secret
Get-SecretInfo
Get-SecretVault
Register-SecretVault
Remove-Secret
Set-SecretInfo
Set-SecretVaultDefault
Test-SecretVault
Unlock-SecretVault
Unregister-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 Set-PSReadLineOption
AddToHistoryHandler parametresini kullanabilirsiniz. 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, , gcloud
ve kubectl
komut satırı araçlarını kullanarak belirtecin alınmasına izin vermek için hassas geçmiş temizlemeyi az
geliş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
PSReadLine sürüm geçmişi
Windows PowerShell 5.1'de gelen sürümden bu yana PSReadLine'da birçok güncelleştirme yapılmıştır.
- Geçerli sürüm PSReadLine 2.3.4
- PowerShell 7.4, PSReadLine 2.3.4 ile birlikte geldi
- PowerShell 7.3, PSReadLine 2.2.6 ile birlikte geldi
- PowerShell 7.2, PSReadLine 2.1.0 ile birlikte geldi
- POWERShell 7.0.11, PSReadLine 2.0.4 ile birlikte gönderildi
- PowerShell 5.1, PSReadLine 2.0.0 ile birlikte geldi
Değişikliklerin tam listesi için bkz. PSReadLine ChangeLog.
- PSReadLine 2.3.4
Çeşitli hata düzeltmelerine ek olarak, bu sürüm aşağıdaki iyileştirmeleri içerir:
Tahmine Dayalı IntelliSense için Kaydırılabilir ListView
- Boyutu terminal penceresinin boyutuna göre otomatik olarak ayarlama
- En fazla 50 tahmin sonucu içerebilir
- Sonuçların sayısını ve geçerli tahmin kaynağını gösteren dinamik liste üst bilgisi
,
gcloud
ve kaynaklarındanaz
belirteç alınmasına izin vermek için geliştirilmiş hassas geçmiş temizlemekubectl
Güvenli özellik erişimine izin vermek için varsayılan hassas geçmiş temizlemeyi geliştirme
Sözcükleri büyük harfe çevirme, küçültme ve büyük harfe çevirme desteği eklendi
Sekme tamamlamanın yalnızca büyük/küçük harfe göre farklı olan
ListItemText
sonuçları göstermesini sağlamaVI düzenleme modunda text-object komutunu
<d,i,w>
desteklerSatır içi tahmin için varsayılan rengi soluk olarak değiştirme
Unicode kod noktasını Unicode karakterine dönüştürmek için README'ye örnek ekleme
Alt+x
Konsol girişinden okumayı bozabilecek yalnız bırakılmış konsola bağlı işlemi sonlandırmak için Windows'da TerminateOrphanedConsoleApps seçeneğini ekleyin
PSReadLine 2.2.6
Bu sürümde Tahmine Dayalı IntelliSense özelliği, aşağıdaki koşullara bağlı olarak varsayılan olarak etkindir:
- Sanal Terminal (VT) destekleniyorsa ve PowerShell 7.2 veya sonraki bir sürümde çalışan PSReadLine varsa, PredictionSource olarak ayarlanır
HistoryAndPlugin
- VT destekleniyorsa ve PsReadLine 7.2'den önce PowerShell'de çalışıyorsa PredictionSource
History
- VT desteklenmiyorsa PredictionSource şu şekilde ayarlanır:
None
- Sanal Terminal (VT) destekleniyorsa ve PowerShell 7.2 veya sonraki bir sürümde çalışan PSReadLine varsa, PredictionSource olarak ayarlanır
PSReadLine 2.2.5
Küçük hata düzeltmeleri içeren resmi hizmet sürümü.
PSReadLine 2.2.2
- PSReadLine iki yeni tahmine dayalı IntelliSense özelliği ekledi:
- Yeni
ListView
öğesinin seçilmesine izin vermek için PredictionViewStyle parametresi eklendi. - psreadline
CommandPrediction
Bağlan PowerShell 7.2'de kullanıma sunulan API'ler, kullanıcının özel bir kaynaktan gelen önerileri işleyebilen bir tahmin modülünü içeri aktarmasına olanak tanır.
- Yeni
- Dinamik yardım için 1.0.0 sürümünü
Microsoft.PowerShell.Pager
kullanacak şekilde güncelleştirildi - Hassas geçmiş öğelerinin temizlenmesi iyileştirildi
- Çok sayıda hata düzeltmesi ve daha küçük geliştirmeler
- PSReadLine iki yeni tahmine dayalı IntelliSense özelliği ekledi:
PSReadLine 2.1.0
Bu sürüm, 2.0.4 sürümünden bu yana eklenen aşağıdaki geliştirmeleri içerir:
- Komut geçmişinden Tahmine Dayalı IntelliSense önerileri ekleme
- Birçok hata düzeltmesi ve API geliştirmesi
PSReadLine 2.0.4
Bu sürüm, 2.0.0 sürümünden bu yana eklenen aşağıdaki geliştirmeleri içerir:
-Chord
Belirli anahtar bağlamalarının aranmasına izin vermek için parametresiGet-PSReadLineKeyHandler
eklendi
Geri bildirim ve PSReadLine'a katkıda bulunma
GitHub sayfasında çekme isteği göndermek veya geri bildirim göndermekte çekinmeyin.
Ayrıca bkz:
- PSReadLine, GNU okuma çizgisi kitaplığından büyük ölçüde etkilenir.
PowerShell
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin