about_ANSI_Terminals
Ondersteuning voor ANSI-escapereeksen
PowerShell heeft veel functies die ondersteuning bieden voor het gebruik van ANSI-escapereeksen om de weergave van uitvoer te beheren in de terminaltoepassing die als host fungeert voor PowerShell.
PowerShell 7.2 heeft een nieuwe automatische variabele $PSStyletoegevoegd en wijzigingen aan de PowerShell-engine toegevoegd ter ondersteuning van de uitvoer van ANSI-ingerichte tekst.
Terminalondersteuning
De ANSI-functies zijn ontworpen om compatibel te zijn met de op xterm gebaseerde terminals. Zie xterm in Wikipedia voor meer informatie.
Op Windows 10 en hoger is de Windows-consolehost xterm compatibel. De Windows Terminal toepassing is ook xterm compatibel.
In macOS is de standaardterminaltoepassing xterm compatibel.
Voor Linux wordt elke distributie geleverd met een andere terminaltoepassing. Raadpleeg de documentatie voor uw distributie om een geschikte terminaltoepassing te vinden.
$PSStyle
De variabele bevat de volgende eigenschappen:
- Opnieuw instellen - Alle decoraties uitschakelen
- Blink - Hiermee schakelt u Blink in
- BlinkOff - Schakelt Blink uit
- Vet- Hiermee wordt vet ingeschakeld
- BoldOff - Vet uitschakelen
- Verborgen - Hiermee wordt verborgen ingeschakeld
- HiddenOff - Verborgen uitschakelen
- Omgekeerd- Hiermee schakelt u Omgekeerd in
- ReverseOff - Omgekeerd uitschakelen
- Cursief : Cursief inschakelen
- CursiefOff - Cursief uitschakelen
- Onderstrepen - Onderstreping inschakelen
- Onderstreping: onderstreping uitschakelen
- OutputRendering - Bepalen wanneer uitvoerrendering wordt gebruikt
- Achtergrond - Genest object om achtergrondkleuring te beheren
- Voorgrond - Genest object om de voorgrondkleuring te beheren
- Opmaak - Genest object waarmee standaardopmaak voor uitvoerstromen wordt beheerd
- Voortgang - Genest object waarmee de weergave van voortgangsbalken wordt bepaald
- FileInfo - (experimenteel) Geneste object om de kleuring van FileInfo-objecten te beheren.
De basisleden retourneren tekenreeksen van ANSI-escapereeksen die zijn toegewezen aan hun namen. De waarden zijn ingesteld om aanpassing toe te staan. U kunt bijvoorbeeld vetgedrukt wijzigen in onderstreept. Met de eigenschapsnamen kunt u gemakkelijker versierde tekenreeksen maken met behulp van tabvoltooiing:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
De volgende leden bepalen hoe of wanneer ANSI-opmaak wordt gebruikt:
$PSStyle.OutputRenderingis eenSystem.Management.Automation.OutputRenderingopsomming met de waarden:- ANSI: Dit is het standaardgedrag. ANSI wordt altijd doorgegeven als-is.
- PlainText: ANSI-escapereeksen worden altijd verwijderd, zodat deze alleen tekst zonder opmaak is.
- Host: De ANSI-escapereeksen worden verwijderd in omgeleid of gesluisd
Notitie
$PSStyle.OutputRenderingis alleen van toepassing op rendering in de host,Out-FileenOut-String. DeOut-FileenOut-Stringcmdlets kunnen pure tekenreeksinvoer wijzigen op basis van de waarde van OutputRendering.De
$PSStyle.Backgrounden$PSStyle.Foregroundleden zijn tekenreeksen die de ANSI-escapereeksen voor de 16 standaardconsolekleuren bevatten.- Zwart
- BrightBlack
- Wit
- BrightWhite
- Red
- BrightRed
- Magenta
- BrightMagenta
- Blue
- BrightBlue
- Cyaan
- BrightCyan
- Green
- BrightGreen
- Geel
- BrightYellow
De waarden zijn ingesteld en kunnen een willekeurig aantal ANSI-escapereeksen bevatten. Er is ook een
FromRgb()methode om 24-bits kleur op te geven. Er zijn twee manieren om deFromRgb()methode aan te roepen.- tekenreeks FromRgb(byte rood, bytegroen, byteblauw)
- tekenreeks FromRgb(int rgb)
In een van de volgende voorbeelden wordt de achtergrondkleur ingesteld op de 24-bits kleur Beige.
$PSStyle.Background.FromRgb(245, 245, 220) $PSStyle.Background.FromRgb(0xf5f5dc)$PSStyle.Formattingis een geneste object voor het beheren van standaardopmaak van foutopsporing, fout, uitgebreide en waarschuwingsberichten. U kunt ook kenmerken beheren, zoals vetgedrukt en onderstrepen. Het vervangt$Host.PrivateDataals de manier om kleuren te beheren voor het weergeven van opmaak.$Host.PrivateDatablijft bestaan voor compatibiliteit met eerdere versies, maar is niet verbonden met$PSStyle.Formatting.$PSStyle.Formattingbevat de volgende leden:- FormatAccent
- TableHeader
- ErrorAccent
- Fout
- Waarschuwing
- Breedsprakig
- Debuggen
$PSStyle.Progresshiermee kunt u weergavebalkweergave van voortgang beheren.- Stijl : een ANSI-tekenreeks die de renderingstijl instelt.
- MaxWidth : hiermee stelt u de maximale breedte van de weergave in. Wordt standaard ingesteld op
120. De minimumwaarden zijn 18. - Weergave - Een opsomming met waarden
MinimalenClassic.Classicis de bestaande rendering zonder wijzigingen.Minimalis één regel minimale rendering.Minimalis de standaardwaarde. - UseOSCIndicator - Defaults to
$false. Stel dit in op$truevoor terminals die OSC-indicatoren ondersteunen.
Notitie
Als de host geen ondersteuning biedt voor virtuele terminal,
$PSStyle.Progress.Viewwordt deze automatisch ingesteld opClassic.In het volgende voorbeeld wordt de weergavestijl ingesteld op een minimale voortgangsbalk.
$PSStyle.Progress.View = 'Minimal'$PSStyle.FileInfois een genest object om de kleuring van FileInfo-objecten te beheren.- Directory - Ingebouwd lid om kleur op te geven voor mappen
- SymbolLink : ingebouwd lid om kleur op te geven voor symbolische koppelingen
- Uitvoerbaar bestand : ingebouwd lid om kleur op te geven voor uitvoerbare bestanden.
- Extensie : gebruik dit lid om kleuren voor verschillende bestandsextensies te definiëren. Het extensielid bevat vooraf extensies voor archief- en PowerShell-bestanden.
Notitie
$PSStyle.FileInfois alleen beschikbaar wanneer dePSAnsiRenderingFileInfoexperimentele functie ia is ingeschakeld. Zie about_Experimental_Features en experimentele functies gebruikenvoor meer informatie.
Cmdlets die ANSI-uitvoer genereren
- De markdown-cmdlets: met de cmdlet Show-Markdown wordt de inhoud van een bestand met markdown-tekst weergegeven. De uitvoer wordt weergegeven met ANSI-reeksen om verschillende stijlen weer te geven. U kunt de definities van de stijlen beheren met behulp van de cmdlets Get-MarkdownOption en Set-MarkdownOption .
- PSReadLine-cmdlets: de PSReadLine-module maakt gebruik van ANSI-reeksen om PowerShell-syntaxiselementen op de opdrachtregel te kleuren. De kleuren kunnen worden beheerd met Get-PSReadLineOption en Set-PSReadLineOption.
Get-Error- de cmdlet Get-Error biedt een gedetailleerde weergave van een foutobject , opgemaakt om het gemakkelijker te lezen.Select-String- Vanaf PowerShell 7.0 gebruikt Select-String ANSI-reeksen om de overeenkomende patronen in de uitvoer te markeren.Write-Progress- ANSI-uitvoer wordt beheerd met behulp van$PSStyle.Progress, zoals hierboven beschreven. Zie Schrijfvoortgang voor meer informatie
ANSI-uitvoer uitschakelen
Ondersteuning voor ANSI-escapereeksen kan worden uitgeschakeld met behulp van de TERM - of NO_COLOR omgevingsvariabelen.
De volgende waarden voor het wijzigen van $env:TERM het gedrag zijn als volgt:
dumb- sets$Host.UI.SupportsVirtualTerminal = $falsexterm-mono- sets$PSStyle.OutputRendering = PlainTextxtermm- sets$PSStyle.OutputRendering = PlainText
Als $env:NO_COLOR deze bestaat, wordt deze $PSStyle.OutputRendering ingesteld op PlainText. Zie voor meer informatie over de omgevingsvariabelehttps://no-color.org/NO_COLOR.
Gebruiken $PSStyle vanuit C #
C#-ontwikkelaars hebben toegang PSStyle tot singleton. Gebruik ziet er als volgt uit:
string output = $"{PSStyle.Instance.Foreground.Red}{PSStyle.Instance.Bold}Hello{PSStyle.Instance.Reset}";
PSStyle bestaat in de naamruimte System.Management.Automation.
De PowerShell-engine bevat de volgende wijzigingen:
- Het PowerShell-opmaaksysteem wordt bijgewerkt om te respecteren
$PSStyle.OutputRendering. - Het
StringDecoratedtype wordt toegevoegd om ANSI-escape-tekenreeksen te verwerken. - De
string IsDecoratedbooleaanse eigenschap is toegevoegd om waar te retourneren wanneer de tekenreeksen ofC1 CSItekenreeksen bevattenESC. - De
Lengtheigenschap van een tekenreeks retourneert de lengte voor de tekst zonder de ANSI-escapereeksen. - De
StringDecorated Substring(int contentLength)methode retourneert een subtekenreeks die begint bij index 0 tot de inhoudslengte die geen deel uitmaakt van ANSI-escapereeksen. Dit is nodig voor tabelopmaak om tekenreeksen af tekappen en ANSI-escapereeksen te behouden die geen afdrukbare tekenruimte in beslag nemen. - De
string ToString()methode blijft hetzelfde en retourneert de tekst zonder opmaak van de tekenreeks. - De
string ToString(bool Ansi)methode retourneert de onbewerkte ANSI-ingesloten tekenreeks als deAnsiparameter waar is. Anders wordt een niet-versleutelde versie met ANSI-escapereeksen verwijderd, geretourneerd. - De
FormatHyperlink(string text, uri link)methode retourneert een tekenreeks met ANSI-escapereeksen die worden gebruikt om hyperlinks te versieren. Sommige terminalhosts, zoals de Windows Terminal, ondersteunen deze markeringen, waardoor de weergegeven tekst in de terminal kan worden geklikt.