about_PSReadLine
Rövid leírás
A PSReadLine továbbfejlesztett parancssori szerkesztési felületet biztosít a PowerShell-konzolon.
Hosszú leírás
A PowerShell 7.3 a PSReadLine 2.2.6-os csomaggal rendelkezik. Újabb verziók érhetők el. A PSReadLine aktuális verziója telepíthető és használható az 5.1-es és újabb Windows PowerShell. Egyes funkciókhoz a PowerShell 7.2-s vagy újabb verzióját kell futtatnia.
A PSReadLine hatékony parancssori szerkesztési felületet biztosít a PowerShell-konzolhoz. Az alábbiakat biztosítja:
- A parancssor szintaxisszínezése
- A szintaxishibák vizuális jelzése
- Jobb többsoros felület (szerkesztés és előzmények)
- Testreszabható kulcskötések
- Cmd és Emacs módok
- Számos konfigurációs lehetőség
- Bash-stílus befejezése (cmd módban nem kötelező, alapértelmezett Emacs módban)
- Emacs yank/kill-ring
- PowerShell-jogkivonat-alapú "szó" áthelyezése és törlése
- Prediktív IntelliSense
- A súgó dinamikus megjelenítése a konzolon anélkül, hogy elveszítené a helyét a parancssorban
A PSReadLine használatához PowerShell 5.1 vagy újabb verzió szükséges. A PSReadLine az alapértelmezett Windows-konzol gazdagéppel, a Windows Terminállal és a Visual Studio Code-tal működik. A Windows PowerShell ISE-ben nem működik.
A PSReadLine a PowerShell-galéria telepíthető. Ha a PSReadLine-t a PowerShell támogatott verziójában szeretné telepíteni, futtassa a következő parancsot.
Install-Module -Name PSReadLine -AllowClobber -Force
Megjegyzés
A PowerShell 7.0-tól kezdve a PowerShell kihagyja a PSReadLine automatikus betöltését Windows rendszeren, ha képernyőolvasó programot észlel. A PSReadLine jelenleg nem működik megfelelően a képernyőolvasókkal. A PowerShell 7.0 alapértelmezett renderelése és formázása Windows rendszeren megfelelően működik. Szükség esetén manuálisan is betöltheti a modult.
Prediktív IntelliSense
A prediktív IntelliSense a lapkiegészítés fogalmának kiegészítése, amely segít a felhasználónak a parancsok sikeres végrehajtásában. Lehetővé teszi a felhasználók számára a teljes parancsok felderítését, szerkesztését és végrehajtását a felhasználó előzményeinek és további tartományspecifikus beépülő moduljainak megfelelő előrejelzések alapján.
Prediktív IntelliSense engedélyezése
A prediktív IntelliSense alapértelmezés szerint le van tiltva. Az előrejelzések engedélyezéséhez futtassa a következő parancsot:
Set-PSReadLineOption -PredictionSource History
A PredictionSource paraméter tartományspecifikus és egyéni követelményekhez is képes beépülő modulokat fogadni.
A Prediktív IntelliSense letiltásához egyszerűen futtassa a következőt:
Set-PSReadLineOption -PredictionSource None
Megjegyzés
A prediktív IntelliSense alapértelmezés szerint engedélyezve van a PSReadLine 2.2.6-ban. További információ: A PSReadLine kiadási előzményei az alábbi Megjegyzések szakaszban.
Egyéni kulcskötések
A PSReadLine a parancsmaggal támogatja az Set-PSReadLineKeyHandler
egyéni kulcskötéseket. A legtöbb egyéni kulcskötés az egyik köthető függvényt hívja meg, például
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
A ScriptBlockot egy kulcshoz kötheti. A ScriptBlock nagyjából bármit meg tud tenni. Néhány hasznos példa:
- a parancssor szerkesztése
- új ablak megnyitása (például súgó)
- címtárak módosítása a parancssor módosítása nélkül
A ScriptBlock két argumentumot kap:
$key
- Egy [ConsoleKeyInfo] objektum, amely az egyéni kötést aktiváló kulcs. Ha ugyanazt a ScriptBlockot több kulcshoz köti, és a kulcstól függően különböző műveleteket kell végrehajtania, ellenőrizheti a következőt$key
: . Ezt az argumentumot sok egyéni kötés figyelmen kívül hagyja.$arg
- Egy tetszőleges argumentum. Ez leggyakrabban egy egész szám argumentum, amelyet a felhasználó a DigitArgument kulcskötésekből ad át. Ha a kötés nem fogad el argumentumokat, érdemes figyelmen kívül hagyni ezt az argumentumot.
Tekintsünk meg egy példát, amely egy parancssort ad hozzá az előzményekhez anélkül, hogy végrehajtanák. Ez akkor hasznos, ha rájön, hogy elfelejtett valamit tenni, de nem szeretné újra beírni a már beírt parancssort.
$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
A PSReadLine modulmappába telepített fájlban SamplePSReadLineProfile.ps1
számos további példát láthat.
A legtöbb kulcskötés segédfüggvényeket használ a parancssor szerkesztéséhez. Ezeket az API-kat about_PSReadLine_Functions dokumentáljuk.
Jegyzetek
Parancselőzmények
A PSReadLine egy előzményfájlt tart fenn, amely tartalmazza a parancssorból beírt összes parancsot és adatot. Az előzményfájlok egy nevű $($host.Name)_history.txt
fájl. Windows rendszereken az előzményfájl a következő helyen található: $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine
. A nem Windows rendszerű rendszereken az előzményfájlok a vagy $env:HOME/.local/share/powershell/PSReadLine
a helyen $env:XDG_DATA_HOME/powershell/PSReadLine
vannak tárolva.
Az előzmények bizalmas adatokat tartalmazhatnak, beleértve a jelszavakat is. A PSReadLine megpróbálja kiszűrni a bizalmas adatokat. A következő sztringeket tartalmazó parancssorok nem lesznek beírva az előzményfájlba.
- jelszó
- asplaintext
- jogkivonat
- apikey
- titkos kód
A PSReadLine 2.2.0 a következő módokon javítja a bizalmas adatok szűrését:
- Az elemzett parancssor PowerShell absztrakt szintaxisfáját (AST) használja a bizalmas adatok kereséséhez.
- A SecretManagement modulban található biztonságos parancsmagok engedélyezési listáját használja a parancsok előzményeihez való hozzáadásához. Az engedélyezési lista a következőket tartalmazza:
Get-Secret
Get-SecretInfo
Get-SecretVault
Register-SecretVault
Remove-Secret
Set-SecretInfo
Set-SecretVaultDefault
Test-SecretVault
Unlock-SecretVault
Unregister-SecretVault
Például a következő parancsok írhatók az előzményfájlba:
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 rendszer nem a következő parancsokat írja az előzményfájlba:
$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.
A PSReadLine kiadási előzményei
Az 5.1-es verziójú Windows PowerShell óta számos frissítés érkezett a PSReadLine-hoz.
- A PowerShell 7.3 a PSReadLine 2.2.6-ot használ
- A PowerShell 7.2.5 a PSReadLine 2.1.0-s verzióval rendelkezik
- A PowerShell 7.0.11 a PSReadLine 2.0.4-et használ
- A PowerShell 5.1 a PSReadLine 2.0.0-s verzióval rendelkezik
A módosítások teljes listáját a PSReadLine változásnaplóban találja.
PSReadLine 2.2.6
Ebben a kiadásban a Prediktív IntelliSense funkció alapértelmezés szerint engedélyezve van a következő feltételektől függően:
- Ha a virtuális terminál (VT) támogatott, és a PSReadLine a PowerShell 7.2-es vagy újabb verziójában fut, a PredictionSource értéke
HistoryAndPlugin
- Ha a VT támogatott, és a PSReadLine a 7.2-t megelőzően fut a PowerShellben, a PredictionSource értéke
History
- Ha a VT nem támogatott, a PredictionSource értéke
None
- Ha a virtuális terminál (VT) támogatott, és a PSReadLine a PowerShell 7.2-es vagy újabb verziójában fut, a PredictionSource értéke
PSReadLine 2.2.5
Hivatalos karbantartási kiadás kisebb hibajavításokkal.
PSReadLine 2.2.2
- A PSReadLine két új prediktív IntelliSense-funkciót adott hozzá:
- Hozzáadta a PredictionViewStyle paramétert, hogy lehetővé tegye az új
ListView
kiválasztását. - Csatlakoztatta a PSReadLine-t a
CommandPrediction
PowerShell 7.2-ben bevezetett API-khoz, hogy a felhasználó importálhasson egy prediktormodult, amely megjelenítheti a javaslatokat egy egyéni forrásból.
- Hozzáadta a PredictionViewStyle paramétert, hogy lehetővé tegye az új
- Frissítve a dinamikus súgó 1.0.0-s verziójának
Microsoft.PowerShell.Pager
használatára - Javítottuk a bizalmas előzményelemek megtisztítását
- Sok hibajavítás és kisebb fejlesztések
- A PSReadLine két új prediktív IntelliSense-funkciót adott hozzá:
PSReadLine 2.1.0
Ez a kiadás a 2.0.4-es kiadás óta hozzáadott következő fejlesztéseket összesít:
- Prediktív IntelliSense-javaslatok hozzáadása a parancselőzményekből
- Számos hibajavítás és API-fejlesztés
PSReadLine 2.0.4
Ez a kiadás a 2.0.0-s kiadás óta hozzáadott következő fejlesztéseket összesít:
- Hozzáadta a
-Chord
paramétert azGet-PSReadLineKeyHandler
adott kulcskötések keresésének engedélyezéséhez
- Hozzáadta a
A PSReadLine-hoz hozzájáruló visszajelzések &
Küldjön lekéréses kérelmet, vagy küldjön visszajelzést a GitHub oldalán.
Lásd még:
- A PSReadLine-t nagymértékben befolyásolja a GNU olvasási vonal kódtára.