about_ANSI_Terminals
Stöd för ANSI-escape-sekvenser
PowerShell har många funktioner som stöder användning av ANSI-escape-sekvenser för att styra återgivningen av utdata i terminalprogrammet som är värd för PowerShell.
PowerShell 7.2 har lagt till en ny automatisk variabel, $PSStyle, och ändringar i PowerShell-motorn för att stödja utdata från ANSI-dekorerad text.
Terminalstöd
ANSI-funktionerna är utformade för att vara kompatibla med xtermbaserade terminaler. Mer information finns i xterm på Wikipedia.
På Windows 10 och senare är Windows-konsolvärden xtermkompatibel. Det Windows-terminal programmet är också xtermkompatibelt.
I macOS är standardterminalprogrammet xtermkompatibelt.
För Linux levereras varje distribution med ett annat terminalprogram. Se dokumentationen för din distribution för att hitta ett lämpligt terminalprogram.
$PSStyle
Variabeln innehåller följande egenskaper:
- Återställ – Inaktiverar alla dekorationer
- Blinka - aktiverar blinkning
- BlinkOff - inaktiverar blinkning
- Fet - aktiverar fetstil
- BoldOff – inaktiverar fetstil
- Dold - aktiverar dold
- HiddenOff - stänger av dold
- Omvänd - aktiverar omvänt
- ReverseOff – inaktiverar omvänt
- Kursiv stil – Aktiverar kursiv stil
- Kursiv av - Inaktiverar kursiv stil
- Understrykning – aktiverar understrykning
- UnderlineOff – inaktiverar understrykning
- OutputRendering – Kontroll när utdatarendering används
- Bakgrund – Kapslat objekt för att styra bakgrundsfärgning
- Förgrund – Kapslat objekt för att styra förgrundsfärgning
- Formatering – kapslat objekt som styr standardformateringen för utdataströmmar
- Förlopp – Kapslat objekt som styr återgivningen av förloppsindikatorer
- FileInfo – (experimentellt) Kapslat objekt för att styra färgning av FileInfo-objekt .
Basmedlemmarna returnerar strängar av ANSI-escape-sekvenser som mappats till deras namn. Värdena kan anges för att tillåta anpassning. Du kan till exempel ändra fetstil till understruken. Egenskapsnamnen gör det enklare för dig att skapa dekorerade strängar med tabbifyllning:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Följande medlemmar styr hur eller när ANSI-formatering används:
$PSStyle.OutputRenderingär enSystem.Management.Automation.OutputRenderinguppräkning med värdena:- ANSI: Detta är standardbeteendet. ANSI skickas alltid som det är.
- Klartext: ANSI-escape-sekvenser tas alltid bort så att det bara är oformaterad text.
- Värd: ANSI-escape-sekvenserna tas bort i omdirigerade eller piped
Anteckning
$PSStyle.OutputRenderinggäller endast för rendering i värden,Out-FileochOut-String.Out-FileCmdletarna ochOut-Stringkan ändra rena strängindata baserat på värdet outputRendering.$PSStyle.BackgroundMedlemmarna och$PSStyle.Foregroundär strängar som innehåller ANSI-escape-sekvenserna för de 16 standardkonsolfärgerna.- Svart
- BrightBlack
- Vit
- BrightWhite
- Red
- BrightRed
- Magenta
- BrightMagenta
- Blue
- BrightBlue
- Cyan
- BrightCyan
- Green
- BrightGreen
- Gul
- BrightYellow
Värdena kan anges och kan innehålla valfritt antal ANSI-escape-sekvenser. Det finns också en
FromRgb()metod för att ange 24-bitars färg. Det finns två sätt att anropaFromRgb()metoden.- string FromRgb(byte red, byte green, byte blue)
- string FromRgb(int rgb)
Något av följande exempel anger bakgrundsfärgen till 24-bitarsfärgen Beige.
$PSStyle.Background.FromRgb(245, 245, 220) $PSStyle.Background.FromRgb(0xf5f5dc)$PSStyle.Formattingär ett kapslat objekt för att styra standardformateringen av felsöknings-, fel-, utförliga och varningsmeddelanden. Du kan också styra attribut som fetstil och understrykning. Den ersätter$Host.PrivateDatasom ett sätt att hantera färger för formateringsrendering.$Host.PrivateDatafortsätter att finnas för bakåtkompatibilitet men är inte ansluten till$PSStyle.Formatting.$PSStyle.Formattinginnehåller följande medlemmar:- FormatAccent
- TableHeader
- ErrorAccent
- Fel
- Varning
- Verbose
- Felsöka
$PSStyle.Progressgör att du kan styra återgivningen av förloppsvyfältet.- Style – En ANSI-sträng som anger återgivningsformatet.
- MaxWidth – anger vyns maximala bredd. Standardvärdet är
120. Minimivärdena är 18. - Visa – en uppräkning med värden och
MinimalClassic.Classicär den befintliga renderingen utan ändringar.Minimalär en minimal återgivning med en rad.Minimalanvänds som standard. - UseOSCIndicator – Standardvärdet är
$false. Ange detta till$trueför terminaler som stöder OSC-indikatorer.
Anteckning
Om värden inte stöder virtuell terminal
$PSStyle.Progress.Viewställs automatiskt in påClassic.I följande exempel anges renderingsformatet till ett minimalt förloppsfält.
$PSStyle.Progress.View = 'Minimal'$PSStyle.FileInfoär ett kapslat objekt för att styra färgning av FileInfo-objekt .- Katalog – Inbyggd medlem för att ange färg för kataloger
- Symbolisk länk – inbyggd medlem för att ange färg för symboliska länkar
- Körbar fil – inbyggd medlem för att ange färg för körbara filer.
- Tillägg – Använd den här medlemmen för att definiera färger för olika filnamnstillägg. Tilläggsmedlemmen innehåller tillägg för arkiv- och PowerShell-filer.
Anteckning
$PSStyle.FileInfoär endast tillgängligt när denPSAnsiRenderingFileInfoexperimentella funktionen ia är aktiverad. Mer information finns i about_Experimental_Features och Använda experimentella funktioner.
Cmdletar som genererar ANSI-utdata
- Markdown-cmdletarna – cmdleten Show-Markdown visar innehållet i en fil som innehåller markdown-text. Utdata renderas med ANSI-sekvenser för att representera olika format. Du kan hantera definitionerna av formatmallarna med hjälp av cmdletarna Get-MarkdownOption och Set-MarkdownOption .
- PSReadLine-cmdletar – PSReadLine-modulen använder ANSI-sekvenser för att färglägga PowerShell-syntaxelement på kommandoraden. Färgerna kan hanteras med Hjälp av Get-PSReadLineOption och Set-PSReadLineOption.
Get-Error- Cmdleten Get-Error ger en detaljerad vy över ett felobjekt , formaterat för att göra det lättare att läsa.Select-String– Från och med PowerShell 7.0 använder Select-String ANSI-sekvenser för att markera matchande mönster i utdata.Write-Progress– ANSI-utdata hanteras med hjälp av$PSStyle.Progress, enligt beskrivningen ovan. Mer information finns i Write-Progress (Skrivförlopp)
Inaktivera ANSI-utdata
Stöd för ANSI-escape-sekvenser kan inaktiveras med hjälp av term- eller NO_COLOR miljövariabler.
Följande värden för $env:TERM ändrar beteendet enligt följande:
dumb- uppsättningar$Host.UI.SupportsVirtualTerminal = $falsexterm-mono- uppsättningar$PSStyle.OutputRendering = PlainTextxtermm- uppsättningar$PSStyle.OutputRendering = PlainText
Om $env:NO_COLOR finns $PSStyle.OutputRendering anges till PlainText. Mer information om miljövariabeln NO_COLOR finns i https://no-color.org/.
Använda $PSStyle från C #
C#-utvecklare kan komma åt PSStyle som en singleton. Användningen ser ut så här:
string output = $"{PSStyle.Instance.Foreground.Red}{PSStyle.Instance.Bold}Hello{PSStyle.Instance.Reset}";
PSStyle finns i namnområdet System.Management.Automation.
PowerShell-motorn innehåller följande ändringar:
- PowerShell-formateringssystemet uppdateras för att respektera
$PSStyle.OutputRendering. - Typen
StringDecoratedläggs till för att hantera undantagna ANSI-strängar. - Den
string IsDecoratedbooleska egenskapen lades till för att returnera true när strängen innehållerESCellerC1 CSIteckensekvenser. - Egenskapen
Lengthför en sträng returnerar längden för texten utan ANSI-escape-sekvenserna. - Metoden
StringDecorated Substring(int contentLength)returnerar en delsträng som börjar vid index 0 upp till innehållslängden som inte är en del av ANSI-escape-sekvenser. Detta krävs för att tabellformatering ska trunkera strängar och bevara ANSI-escape-sekvenser som inte tar upp utskrivbart teckenutrymme. - Metoden
string ToString()förblir densamma och returnerar klartextversionen av strängen. - Metoden
string ToString(bool Ansi)returnerar den inbäddade strängen raw ANSI om parameternAnsiär true. Annars returneras en klartextversion med ANSI-escape-sekvenser borttagna. - Metoden
FormatHyperlink(string text, uri link)returnerar en sträng som innehåller ANSI-escape-sekvenser som används för att dekorera hyperlänkar. Vissa terminalvärdar, till exempel Windows-terminal, stöder den här markeringen, vilket gör den renderade texten klickbar i terminalen.