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.4 a PSReadLine 2.3.4-et használ. Az aktuális verzió a PSReadLine 2.3.4. 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. Ez 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 I-ben Standard kiadás.

A PSReadLine a PowerShell-galéria 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

Feljegyzés

A PowerShell 7.0-tól kezdve 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 a tartományspecifikus és egyéni követelmények beépülő moduljait is képes fogadni.

A Prediktív IntelliSense letiltásához egyszerűen futtassa a következőt:

Set-PSReadLineOption -PredictionSource None

Feljegyzés

A prediktív IntelliSense alapértelmezés szerint engedélyezve van a PSReadLine 2.2.6-ban. További információkért lásd a PSReadLine kiadási előzményeit az alábbi Megjegyzések szakaszban.

Egyéni kulcskötések

A PSReadLine támogatja az egyéni kulcskötéseket a Set-PSReadLineKeyHandler parancsmag használatával. 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 kiváltó kulcs. Ha ugyanazt a ScriptBlock-et 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 PSReadLine modulmappában telepített fájlban SamplePSReadLineProfile.ps1szá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_Functions vannak dokumentálva.

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 $($host.Name)_history.txt. Windows rendszereken az előzményfájlt a rendszer a következő helyen $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLinetárolja: . A nem Windows rendszerű rendszereken az előzményfájlok tárolása a következő helyen $env:XDG_DATA_HOME/powershell/PSReadLine történik $env:HOME/.local/share/powershell/PSReadLine: vagy .

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.

  • password
  • asplaintext
  • token
  • apikey
  • secret

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-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 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 vannak olyan parancsok, amelyeket nem szeretne az előzményfájlokba írni, használhatja a Set-PSReadLineOption parancsmag AddToHistoryHandler paraméterét. Az AddToHistoryHandler használatára példa: Set-PSReadLineOption 7. példa.

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

A PSReadLine kiadási előzményei

A Windows PowerShell 5.1-es verziójától kezdve számos frissítés érkezett a PSReadLine-hoz.

  • A jelenlegi kiadás a PSReadLine 2.3.4
  • PowerShell 7.4 hajók PSReadLine 2.3.4
  • PowerShell 7.3 hajók PSReadLine 2.2.6
  • A PowerShell 7.2 a PSReadLine 2.1.0-val
  • A PSReadLine 2.0.4-vel szállított PowerShell 7.0.11
  • PowerShell 5.1-hajók a PSReadLine 2.0.0-val

A módosítások teljes listáját a PSReadLine változásnaplóban találja.

  • PSReadLine 2.3.4

A számos hibajavítás mellett ez a kiadás a következő fejlesztéseket is tartalmazza:

  • Görgethető ListView a prediktív IntelliSense-hez

    • Automatikusan a terminálablak méretétől függően igazítja a méretet
    • Legfeljebb 50 előrejelzési eredményt tartalmazhat
    • Dinamikus listafejléc, amely az eredmények számát és az aktuális előrejelzési forrást jeleníti meg
  • Továbbfejlesztett bizalmas előzménytisztítás, amely lehetővé teszi a jogkivonat beolvasását a az, gcloudés kubectl

  • Az alapértelmezett bizalmas előzménytisztítás javítása a biztonságos tulajdonsághozzáférés érdekében

  • További támogatás a szavak továbbfejlesztéséhez, leépítéséhez és nagybetűsítéséhez

  • A tabulátor kitöltése ListItemText csak az egyes esetekben eltérő eredményeket jeleníti meg

  • Támogatja a text-object parancsot <d,i,w> a VI szerkesztési módban

  • A beágyazott előrejelzés alapértelmezett színének módosítása halványra

  • Minta hozzáadása a README-hez Unicode-kódpont Unicode-karakterlá alakításához Alt+x

  • Adja hozzá a TerminateOrphanedConsoleApps beállítást Windows rendszeren, hogy megölje az árva konzolhoz csatlakoztatott folyamatot, amely megzavarhatja a konzol bemenetének olvasását

  • 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
  • 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 ListViewelem kiválasztását.
      • Csatlakozás PSReadLine-t a CommandPrediction A PowerShell 7.2-ben bevezetett API-k lehetővé teszik, hogy a felhasználók importálhassanak egy prediktormodult, amely egyéni forrásból jelenítheti meg a javaslatokat.
    • Frissítve a dinamikus súgó 1.0.0-s Microsoft.PowerShell.Pager verziójának használatára
    • Javítottuk a bizalmas előzményelemek megtisztítását
    • Sok hibajavítás és kisebb fejlesztések
  • 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 az Get-PSReadLineKeyHandler adott kulcskötések keresésének engedélyezéséhez

Visszajelzés & hozzájárulás a PSReadLine-hoz

PSReadLine a GitHubon

Nyugodtan küldjön lekéréses kérelmet, vagy küldjön visszajelzést a GitHub-oldalon.

Kapcsolódó információk