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.ps1szá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.txtfá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/PSReadLinea 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
  • 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 ListViewkivá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.
    • 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
  • 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

A PSReadLine-hoz hozzájáruló visszajelzések &

PSReadLine a GitHubon

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.