Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Rövid leírás
A PSReadLine továbbfejlesztett parancssori szerkesztési felületet biztosít a PowerShell-konzolon.
Hosszú leírás
A Windows PowerShell 5.1-es verziójától kezdve számos frissítés érkezett a PSReadLine-hoz.
- a 2.4.5-ös verziót először a PowerShell 7.6.0-rc.1-ben szállították le
- a 2.3.6-os verziót először a PowerShell 7.4.7-ben és a 7.5.0-s verzióban szállították le
- A 2.3.5-ös verziót először a PowerShell 7.4.2-ben és a 7.5.0-preview.3-ban szállították le
- v2.3.4 először a PowerShell 7.4.0-rc.1-ben
- a 2.2.6-os verziót először a PowerShell 7.3.0-s verzióban szállították le
- A 2.1.0-s verziót először a PowerShell 7.2.5-ben szállították le
- A 2.0.4-et először a PowerShell 7.0.11-ben szállították le
- v2.0.0-s hajók a Windows PowerShell 5.1-ben
A verzióeltérésről további információt a about_PSReadLine_Release_Notescímű témakörben talál.
A PSReadLine jelenlegi verziója telepíthető és használható a Windows PowerShell 5.1-es és újabb verzióiban. 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. A következő lehetőségeket biztosítja:
- A parancssor szintaxisszínezése
- 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 (nem kötelező Cmd módban, alapértelmezett Emacs módban)
- Emacs yank/kill-ring
- A PowerShell-jogkivonaton alapuló "szó" áthelyezés és törlés
- 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-konzolgazda, a Windows Terminal és a Visual Studio Code használatával működik. Nem működik a Windows PowerShell ISE-ben.
A PSReadLine a PowerShell-katalógusból telepíthető. A PSReadLine a PowerShell támogatott verziójában való telepítéséhez futtassa az alábbi parancsot.
Install-Module -Name PSReadLine -AllowClobber -Force
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 a tartományspecifikus és egyéni követelmények beépülő moduljait is elfogadhatja.
A Prediktív IntelliSense letiltásához egyszerűen futtassa a következőt:
Set-PSReadLineOption -PredictionSource None
Egyéni kulcskötések
A PSReadLine a Set-PSReadLineKeyHandler parancsmaggal támogatja az egyéni kulcskötéseket. A legtöbb egyéni kulcskötés meghívja az egyik köthető függvényt, például
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
A ScriptBlockot kulcshoz kötheti. A ScriptBlock szinte bármit megtehet, amit csak szeretne. 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 fogad:
$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$key. Ezt az argumentumot számos egyéni kötés figyelmen kívül hagyja.$arg– 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 fogadja el az argumentumokat, érdemes figyelmen kívül hagyni ezt az argumentumot.
Tekintsünk meg egy példát, amely 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 SamplePSReadLineProfile.ps1 modulmappában telepített fájlban számos további példa látható.
A legtöbb kulcskötés néhány segédfüggvényt használ a parancssor szerkesztéséhez. Ezek az API-k about_PSReadLine_Functionsdokumentálva vannak.
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ájl egy névvel ellátott $($Host.Name)_history.txtfájl, amely minden gazdagéphez egyedi fájlt eredményez. A Visual Studio Code PowerShell-bővítménykonzoljának előzményfájlja például az Visual Studio Code Host_history.txt.
- Windows rendszereken a rendszer az előzményfájlt a következő helyen
$Env:APPDATA\Microsoft\Windows\PowerShell\PSReadLinetárolja: . - A nem Windows rendszerű rendszereken az előzményfájlokat a rendszer
$Env:XDG_DATA_HOME/powershell/PSReadLinevagy$Env:HOME/.local/share/powershell/PSReadLinetárolja.
Az előzmények bizalmas adatokat, például jelszavakat tartalmazhatnak. A PSReadLine megpróbálja kiszűrni a bizalmas információkat. Az alábbi sztringeket tartalmazó parancssorok nem lesznek beírva az előzményfájlba.
passwordasplaintexttokenapikeysecret
A PSReadLine 2.2.0 javítja a bizalmas adatok szűrését
- Az elemezett 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ával engedélyezi a parancsok hozzáadását az előzményekhez. Az engedélyezési lista a következőket tartalmazza:
Get-SecretGet-SecretInfoGet-SecretVaultRegister-SecretVaultRemove-SecretSet-SecretInfoSet-SecretVaultDefaultTest-SecretVaultUnlock-SecretVaultUnregister-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 következő parancsok nem lesznek beírva 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.
Ha más parancsokat nem szeretne az előzményfájlokba írni, használhatja a parancsmag Set-PSReadLineOption AddToHistoryHandler paraméterét. Az AddToHistoryHandlerhasználatára vonatkozó példa: Set-PSReadLineOption7. példája.
A PSReadLine 2.3.4 javítja a bizalmas adatok szűrését
Továbbfejlesztettük az alapértelmezett bizalmas előzménytisztítást, hogy az előzmények biztonságos tulajdonsághozzáférést tartalmazzanak.
Ha a bizalmas sztring egy tulajdonsághozzáférés része:
- Ha ez a taghozzáférési művelet nem része a hozzárendelésnek, akkor biztonságosnak tartjuk
- Ellenkező esetben, ha a jobb oldali folyamat vagy változó, akkor azt is biztonságosnak tartjuk
A következő használati esetek például biztonságosnak tekinthetők, és menthetők az előzményekbe.
$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
A kiadás javította a bizalmas előzménytisztítást is, hogy lehetővé tegye a jogkivonat lekérését a az, gcloudés kubectl parancssori eszközökkel.
A következő használati esetek például biztonságosnak tekinthetők, és menthetők az előzményekbe.
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
Visszajelzés a PSReadLine-hoz való hozzájárulásról &
Nyugodtan küldjön lekéréses kérelmet, vagy küldjön visszajelzést a GitHub-oldalon.
Lásd még
- A PSReadLine-t nagymértékben befolyásolja a GNU olvasóvonal kódtár.