Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Kısa açıklama
PowerShell'de ANSI kaçış dizileri için sağlanan desteği açıklar.
Uzun açıklama
PowerShell, PowerShell'i barındıran terminal uygulamasında çıkışın işlenmesini denetlemek için ANSI kaçış dizilerinin kullanımını destekleyen birçok özelliğe sahiptir.
PowerShell 7.2 yeni $PSStylebir otomatik değişken ekledi ve ANSI ile dekore edilmiş metnin çıkışını desteklemek için PowerShell altyapısında değişiklik yaptı.
ANSI Terminal desteği
ANSI özellikleri, xterm tabanlı terminallerle uyumlu olacak şekilde tasarlanmıştır. Daha fazla bilgi için bkz . Wikipedia'daki xterm .
Windows 10 ve üzeri sürümlerde Windows Konsol Konağı xterm ile uyumludur. Windows Terminal uygulaması da xterm ile uyumludur.
macOS'ta varsayılan terminal uygulaması xterm ile uyumludur.
Linux için her dağıtım farklı bir terminal uygulamasıyla birlikte gönderilir. Uygun bir terminal uygulaması bulmak için dağıtımınız için belgelere bakın.
$PSStyle
Değişken aşağıdaki özelliklere sahiptir:
- Sıfırla - Tüm süslemeleri kapatır
- Yanıp Sönme - Yanıp Sönme'ye açar
- BlinkOff - Yanıp sönme kapatılır
- Kalın - Kalın'ın açması
- BoldOff - Kalın'ın kapatılmasını
- Soluk - Soluk'ı açar (PowerShell 7.4'te eklenir)
- DimOff - Dim'i kapatır (PowerShell 7.4'te eklenir)
- Gizli - Gizliyi açar
- HiddenOff - Gizliyi kapatır
- Ters - Ters Çevir'i açar
- ReverseOff - Ters Çevir'i kapatır
- italik - Italik'i açar
- ItalicOff - Italik'i kapatır
- Altı Çizili - Altı çiziliyi açar
- UnderlineOff - Altı çizili kapatmayı açar
- Üstü çizili - Üstü çiziliyi açar
- Üstü ÇiziliOff - Üstü kapalı bırakır
- OutputRendering - Çıkış işlemenin ne zaman kullanıldığını denetleme
- Biçimlendirme - Çıkış akışları için varsayılan biçimlendirmeyi denetleen iç içe nesne
- İlerleme - İlerleme çubuklarının işlenmesini denetleen iç içe nesne
- FileInfo - FileInfo nesnelerinin renklendirmesini denetlemek için iç içe nesne.
- Ön plan - Ön plan renklendirmesini denetlemek için iç içe nesne
- Arka Plan - Arka plan renklendirmesini denetlemek için iç içe nesne
Temel üyeler adlarına eşlenmiş ANSI kaçış dizilerinin dizelerini döndürür. Değerler özelleştirmeye izin verecek şekilde ayarlanabilir. Örneğin, kalın değerini altı çizili olarak değiştirebilirsiniz. Özellik adları, sekme tamamlama özelliğini kullanarak süslü dizeler oluşturmanızı kolaylaştırır:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Aşağıdaki üyeler ANSI biçimlendirmesinin nasıl veya ne zaman kullanılacağını denetler:
$PSStyle.OutputRenderingdeğerlerine sahip birSystem.Management.Automation.OutputRenderingsabit listesidir:ANSI: ANSI kaçış dizileri her zaman olduğu gibi geçirilir.Önemli
Çıkışı aşağı akışla yürütülmesi amaçlanan bir dosyaya veya işlem hattına yeniden yönlendirirken ANSI modunu kullanmanız gerekir. Bu, çıkışın değiştirilmemesini sağlar. Başka bir modun kullanılması ANSI kaçış dizilerini kaldırarak çıkışı değiştirir ve bu da yürütme davranışını değiştirebilir.
PlainText: ANSI kaçış dizileri her zaman yalnızca düz metin olacak şekilde çıkarılır. Uzak oturumlarda, uzak ana bilgisayar olarakPlainTextayarlanırsa, çıkış, yerel istemciye geri gönderilmeden önce ANSI kaçış dizilerinden çıkarılır.Host: Bu varsayılan davranıştır. ANSI kaçış dizileri yeniden yönlendirilen veya kanallı çıkıştan kaldırılır. Daha fazla bilgi için bkz . Çıktıyı yeniden yönlendirme.
$PSStyle.Backgroundve$PSStyle.Foregroundüyeleri, 16 standart konsol rengi için ANSI kaçış dizilerini içeren dizelerdir.BlackBrightBlackWhiteBrightWhiteRedBrightRedMagentaBrightMagentaBlueBrightBlueCyanBrightCyanGreenBrightGreenYellowBrightYellow
Değerler ayarlanabilir ve herhangi bir sayıda ANSI kaçış dizisi içerebilir. Ayrıca 24 bit renk belirtmek için bir
FromRgb()yöntem de vardır. yöntemini çağırmanınFromRgb()iki yolu vardır.string FromRgb(byte red, byte green, byte blue) string FromRgb(int rgb)Aşağıdaki örneklerden biri arka plan rengini 24 bit renk
Beigeolarak ayarlar.$PSStyle.Background.FromRgb(245, 245, 220) $PSStyle.Background.FromRgb(0xf5f5dc)$PSStyle.Formattinghata ayıklama, hata, ayrıntılı, uyarı iletilerinin ve liste ve tablo üst bilgilerinin varsayılan biçimlendirmesini denetlemek için iç içe yerleştirilmiş bir nesnedir. Kalın ve altı çizili gibi öznitelikleri de de denetleyebilirsiniz. Biçimlendirme işleme için renkleri yönetmenin yolu olarak yerini alır$Host.PrivateData.$Host.PrivateDatageriye dönük uyumluluk için varolmaya devam eder, ancak öğesine$PSStyle.Formattingbağlı değildir.$PSStyle.Formattingaşağıdaki üyelere sahiptir:- FormatAccent - liste öğeleri için biçimlendirme
- ErrorAccent - hata meta verileri için biçimlendirme
- Hata - hata iletileri için biçimlendirme
- Uyarı - uyarı iletileri için biçimlendirme
- Ayrıntılı - ayrıntılı iletiler için biçimlendirme
- Hata ayıklama - hata ayıklama iletileri için biçimlendirme
- TableHeader - tablo üst bilgileri için biçimlendirme
- CustomTableHeaderLabel - nesne üzerinde gerçekte özellik olmayan tablo üst bilgileri için biçimlendirme
- FeedbackName - geri bildirim sağlayıcısı adı için biçimlendirme (PowerShell 7.4'te deneysel bir özellik olarak eklenir)
- FeedbackText - geri bildirim iletileri için biçimlendirme (PowerShell 7.4'te deneysel bir özellik olarak eklenir)
- FeedbackAction - Geri bildirim sağlayıcısı tarafından önerilen eylemler için biçimlendirme (PowerShell 7.4'te deneysel bir özellik olarak eklenir)
$PSStyle.Progress, ilerleme görünümü çubuğu işlemeyi denetlemenize olanak tanır.- Stil - İşleme stilini ayaran ANSI dizesi.
-
MaxWidth - Görünümün maksimum genişliğini ayarlar. varsayılan değeridir
120. En düşük değer 18'dir. -
Görünüm - ve
MinimaldeğerleriniClassiciçeren bir sabit listesi.Classic, değişiklik olmadan var olan işlemedir.Minimaltek satırlık minimal bir işlemedir.Minimalvarsayılan değerdir. -
UseOSCIndicator - Varsayılan olarak kullanılır
$false. Bunu$trueOSC göstergelerini destekleyen terminaller için olarak ayarlayın.
Not
Konak Sanal Terminal'i desteklemiyorsa,
$PSStyle.Progress.Viewotomatik olarak olarakClassicayarlanır.Aşağıdaki örnek, işleme stilini en düşük ilerleme çubuğuna ayarlar.
$PSStyle.Progress.View = 'Minimal'$PSStyle.FileInfoFileInfo nesnelerinin renklendirmesini denetlemek için iç içe geçmiş bir nesnedir.Dizin - Dizinlerin rengini belirtmek için yerleşik üye
SymbolicLink - Sembolik bağlantıların rengini belirtmek için yerleşik üye
Yürütülebilir - Yürütülebilir dosyalar için renk belirtmek üzere yerleşik üye.
Uzantı - Farklı dosya uzantılarının renklerini tanımlamak için bu üyeyi kullanın. Uzantı üyesi, arşiv ve PowerShell dosya uzantıları için renkleri önceden tanımlı olarak ayarlar.
Aşağıdaki örnekte, çeşitli
FileInfoayarlar ve belirli dosya uzantıları için renklerin nasıl değiştireceği gösterilmektedir. Renkler, açık terminal arka planında iyi çalışacak şekilde seçilir.$PSStyle.FileInfo.Directory = $PSStyle.Background.FromRgb(0x2f6aff) + $PSStyle.Foreground.BrightWhite $PSStyle.FileInfo.SymbolicLink = $PSStyle.Foreground.Cyan $PSStyle.FileInfo.Executable = $PSStyle.Foreground.BrightMagenta $PSStyle.FileInfo.Extension['.ps1'] = $PSStyle.Foreground.Cyan $PSStyle.FileInfo.Extension['.ps1xml'] = $PSStyle.Foreground.Cyan $PSStyle.FileInfo.Extension['.psd1'] = $PSStyle.Foreground.Cyan $PSStyle.FileInfo.Extension['.psm1'] = $PSStyle.Foreground.Cyan
ANSI çıkışı oluşturan cmdlet'ler
- markdown cmdlet'leri - Show-Markdown cmdlet'i, markdown metni içeren bir dosyanın içeriğini görüntüler. Çıkış, farklı stilleri temsil etmek için ANSI dizileri kullanılarak işlenir. Get-MarkdownOption ve Set-MarkdownOption cmdlet'lerini kullanarak stillerin tanımlarını yönetebilirsiniz.
- PSReadLine cmdlet'leri - PSReadLine modülü, komut satırındaKi PowerShell söz dizimi öğelerini renklendirmek için ANSI dizilerini kullanır. Renkler Get-PSReadLineOption ve Set-PSReadLineOption kullanılarak yönetilebilir.
-
Get-Error- Get-Error cmdlet'i, okunmasını kolaylaştırmak için biçimlendirilmiş bir Error nesnesinin ayrıntılı bir görünümünü döndürür. -
Select-String- PowerShell 7.0 sürümünden başlayarak Select-String, çıkıştaki eşleşen desenleri vurgulamak için ANSI dizilerini kullanır. -
Write-Progress- ANSI çıkışı, yukarıda açıklandığı gibi kullanılarak$PSStyle.Progressyönetilir. Daha fazla bilgi için bkz . Yazma İlerleme Durumu
Ana Bilgisayar modunda çıkışı yeniden yönlendirme
Varsayılan olarak, $PSStyle.OutputRendering Konak olarak ayarlanmıştır. ANSI kaçış dizileri yeniden yönlendirilen veya kanallı çıkıştan kaldırılır.
OutputRendering yalnızca Konak, Out-Fileve Out-Stringiçindeki işleme için geçerlidir. Yerel yürütülebilir dosyalardan alınan çıkış etkilenmez.
PowerShell 7.2.6, aşağıdaki senaryolar için ve Out-File davranışını Out-String değiştirdi:
- Giriş nesnesi saf dize olduğunda, bu cmdlet'ler OutputRendering ayarından bağımsız olarak dizeyi değiştirmeden tutar.
- Giriş nesnesinin bir biçimlendirme görünümünün uygulanması gerektiğinde, bu cmdlet'ler çıkış dizelerini OutputRendering ayarına göre biçimlendirme çıkış dizelerinde tutar veya kaldırır.
Bu, PowerShell 7.2 ile karşılaştırıldığında bu cmdlet'lerde hataya neden olan bir değişikliktir.
OutputRendering , örneğin bir komut satırından çalıştırıp pwsh çıkışı yeniden yönlendirdiğinizde PowerShell ana bilgisayar işleminden gelen çıkışa uygulanmaz.
Aşağıdaki örnekte PowerShell, Linux üzerinde üzerinde üzerinde bashçalıştırılır. cmdlet'i Get-ChildItem ANSI ile dekore edilmiş metin oluşturur. İşlemde bash yeniden yönlendirme gerçekleştiğinden, PowerShell konağı dışında çıkış OutputRendering'den etkilenmez.
pwsh -NoProfile -Command 'Get-ChildItem' > out.txt
İçeriğinizi out.txt incelediğinizde ANSI kaçış dizilerini görürsünüz.
Buna karşılık, PowerShell oturumunda yeniden yönlendirme gerçekleştiğinde OutputRendering yeniden yönlendirilen çıkışı etkiler.
pwsh -NoProfile -Command 'Get-ChildItem > out.txt'
İçeriğini out.txt incelediğinizde ANSI kaçış dizisi yoktur.
ANSI çıktısını devre dışı bırakma
ANSI kaçış dizileri desteği TERM veya NO_COLOR ortam değişkenleri kullanılarak kapatılabilir.
Aşağıdaki davranış değerleri $Env:TERM aşağıdaki gibi değişir:
-
dumb-Ayarlar$Host.UI.SupportsVirtualTerminal = $false -
xterm-mono-Ayarlar$PSStyle.OutputRendering = PlainText -
xterm-Ayarlar$PSStyle.OutputRendering = PlainText
Varsa$Env:NO_COLOR, $PSStyle.OutputRendering PlainText olarak ayarlanır. NO_COLOR ortam değişkeni hakkında daha fazla bilgi için bkzhttps://no-color.org/. .
C'den kullanma $PSStyle #
C# geliştiricileri, aşağıdaki örnekte gösterildiği gibi tekil olarak erişebilir PSStyle :
string output = $"{PSStyle.Instance.Foreground.Red}{PSStyle.Instance.Bold}Hello{PSStyle.Instance.Reset}";
PSStyle , System.Management.Automation ad alanında bulunur.
PowerShell altyapısı aşağıdaki değişiklikleri içerir:
- PowerShell biçimlendirme sistemi, 'a göre
$PSStyle.OutputRenderinggüncelleştirilir. - Tür
StringDecorated, ANSI kaçış dizelerini işlemek için eklenir. -
string IsDecoratedDize veya karakter dizileri içerdiğindeESCtrueC1 CSIiçin boole özelliği eklendi. - Bir
Lengthdizenin özelliği, ANSI kaçış dizileri olmadan metnin uzunluğunu döndürür. - yöntemi,
StringDecorated Substring(int contentLength)ANSI kaçış dizilerinin bir parçası olmayan içerik uzunluğuna kadar dizin 0'dan başlayan bir alt dize döndürür. Bu, dizeleri kesmeye ve yazdırılabilir karakter alanı kaplamayan ANSI kaçış dizilerini korumaya yönelik tablo biçimlendirmesi için gereklidir. -
string ToString()yöntemi aynı kalır ve dizenin düz metin sürümünü döndürür. -
string ToString(bool Ansi)parametresiAnsiise yöntemi ham ANSI katıştırılmış dizesini döndürür. Aksi takdirde, ANSI kaçış dizileri kaldırılmış bir düz metin sürümü döndürülür. - yöntemi,
FormatHyperlink(string text, uri link)köprüleri süslemek için kullanılan ANSI kaçış dizilerini içeren bir dize döndürür. Windows Terminali gibi bazı terminal konakları, işlenen metni terminalde tıklanabilir hale getiren bu işaretlemeyi destekler.
PSStyle sınıfının statik yöntemleri
PowerShell 7.4 sınıfına [System.Management.Automation.PSStyle] üç yeni statik yöntem ekler.
[System.Management.Automation.PSStyle] | Get-Member -Static -MemberType Method
TypeName: System.Management.Automation.PSStyle
Name MemberType Definition
---- ---------- ----------
Equals Method static bool Equals(System.Object objA, System.Object objB)
MapBackgroundColorToEscapeSequence Method static string MapBackgroundColorToEscapeSequence(System.ConsoleColor bac…
MapColorPairToEscapeSequence Method static string MapColorPairToEscapeSequence(System.ConsoleColor foregroun…
MapForegroundColorToEscapeSequence Method static string MapForegroundColorToEscapeSequence(System.ConsoleColor for…
ReferenceEquals Method static bool ReferenceEquals(System.Object objA, System.Object objB)
Bu yöntemler, ConsoleColor değerlerini ön plan ve arka plan renkleri için veya her ikisinin birleşimi için ANSI kaçış sıralarına dönüştürmenin bir yolunu sağlar.
Aşağıdaki örneklerde bu yöntemler tarafından üretilen ANSI kaçış dizileri gösterilmektedir.
using namespace System.Management.Automation
[PSStyle]::MapBackgroundColorToEscapeSequence('Black') | Format-Hex
Label: String (System.String) <3A04954D>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 1B 5B 34 30 6D �[40m
[PSStyle]::MapForegroundColorToEscapeSequence('Red') | Format-Hex
Label: String (System.String) <38B50F41>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 1B 5B 39 31 6D �[91m
[PSStyle]::MapColorPairToEscapeSequence('Red','Black') | Format-Hex
Label: String (System.String) <365A5875>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 1B 5B 39 31 3B 34 30 6D �[91;40m
Ayrıca bakınız
PowerShell