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, $PSStyleyeni bir 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 Wikipedia'da xterm bölümüne bakın.
Windows 10 ve üzeri sürümlerde Windows Konsol Konağı xterm ile uyumludur. Windows Terminal uygulaması da xterm 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ırlama - Tüm süslemeleri kapatır
- Yanıp Sönme - Yanıp Sönme'yi açar
- BlinkOff - Yanıp Sönme kapatılır
- Kalın - Kalın'ı açar
- - Kalın yazı kapatılır
- Dim - Dim'i açar (PowerShell 7.4'te eklenir)
- DimOff - Dim'i kapatır (PowerShell 7.4'te eklenir)
- Gizli - Gizli'yi açar
- HiddenOff
- Gizli mod kapatılır - Ters - Ters Çevir'i açar
- ters
- Ters Çevir'i kapatır - italik - Italik'i açar
- ItalicOff - italik'i kapatır
- Alt Çizgi
- Altı çiziliyi açar - UnderlineOff - Altı çizili kapatır
- Üstü Çizili - Üstü çiziliyi etkinleştirir
- StrikethroughOff - Üstü kapalı olur
- OutputRendering - Çıktı 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 kontrol etmek için iç içe nesne
Temel üyeler, adlarına eşlenmiş ANSI kaçış 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.OutputRendering, değerleri içeren birSystem.Management.Automation.OutputRenderingsabit listesidir:ANSI: ANSI kaçış sıraları her zaman as-isüzerinden 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 bilgisayarPlainTextolarak ayarlanı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. 24 bit renk belirtmek için bir
FromRgb()yöntemi de vardır.FromRgb()yöntemini çağırmanın 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.Formatting, hata ayıklama, hata, ayrıntılı ve uyarı iletilerinin varsayılan biçimlendirmesini ve liste ile tablo üst bilgilerini denetlemek için yerleşik bir nesnedir. Kalın ve altı çizili gibi öznitelikleri de de denetleyebilirsiniz. Biçimlendirme işlemesinde renkleri yönetme yöntemi olarak$Host.PrivateDatayerine geçer.$Host.PrivateDatageriye dönük uyumluluk için varolmaya devam eder ancak$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ı mesajlar 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 çubuğu görünümü işlemeyi denetlemenize olanak tanır.- Stil - İşleme stilini belirleyen bir ANSI dizesi.
-
MaxWidth - Görünümün en büyük genişliğini ayarlar. varsayılan olarak
120. En düşük değer 18'dir. -
Görünüm - değerleri,
MinimalveClassiciçeren bir sabit listesi.Classic, değişiklik olmadan var olan işlemedir.Minimaltek satırlı minimal bir görüntülemedir.Minimalvarsayılan değerdir. -
UseOSCIndicator - Varsayılan olarak
$falseşeklinde ayarlanır. Bunu OSC göstergelerini destekleyen terminaller için$trueolarak ayarlayın.
Not
Konak Sanal Terminal'i desteklemiyorsa,
$PSStyle.Progress.Viewotomatik olarakClassicolarak ayarlanır.Aşağıdaki örnek, işleme stilini en düşük ilerleme çubuğuna ayarlar.
$PSStyle.Progress.View = 'Minimal'$PSStyle.FileInfo, FileInfo nesnelerinin renklendirmesini denetlemek için iç içe geçmiş bir nesnedir.Dizin - Dizinler için renk belirleyen yerleşik fonksiyon
SymbolicLink - Sembolik bağlantıların rengini belirtmek için yerleşik üye
Yürütülebilir - Yürütülebilir dosyaların rengini belirtmek için yerleşik özellik.
Uzantısı - 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-PSReadLineOptionkullanılarak yönetilebilir.
-
Get-Error- Hata Al cmdlet'i, okunmasını kolaylaştırmak için biçimlendirilmiş Hata nesnesinin ayrıntılı bir görünümünü döndürür. -
Select-String- PowerShell 7.0'dan itibaren, Select-String çıkıştaki eşleşen desenleri vurgulamak için ANSI dizilerini kullanır. -
Write-Progress- ANSI çıkışı, yukarıda açıklandığı gibi$PSStyle.Progresskullanılarak yönetilir. Daha fazla bilgi için bkz. Yazma İlerlemesi
Ana Bilgisayar modunda çıkışı yeniden yönlendirme
Varsayılan olarak, $PSStyle.OutputRenderingAna Bilgisayarolarak 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ş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 Out-File ve Out-String davranışını 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ş nesnesine bir biçimlendirme görünümü uygulanması gerektiğinde, bu cmdlet'ler çıktının biçimlendirilmiş dize dizileri üzerinde OutputRendering ayarına göre kaçış dizilerini tutar veya kaldırır.
PowerShell 7.2 ile karşılaştırıldığında, bu cmdlet'lerde önemli bir değişikliktir.
OutputRendering, PowerShell ana bilgisayar işlemi tarafından üretilen çıktılara uygulanmaz; örneğin, bir komut satırından pwsh'yi çalıştırıp çıktıyı yönlendirdiğinizde.
Aşağıdaki örnekte PowerShell, bash'den Linux üzerinde çalıştırılır.
Get-ChildItem cmdlet'i ANSI ile dekore edilmiş metin oluşturur. Yeniden yönlendirme bash işleminde, PowerShell konağı dışında gerçekleştiğinden, çıktı OutputRenderingtarafından etkilenmez.
pwsh -NoProfile -Command 'Get-ChildItem' > out.txt
out.txt içeriğini 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'
out.txt içeriğini incelediğinizde, ANSI kaçış dizileri bulunmaz.
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 $Env:TERM değerleri davranışı aşağıdaki gibi değiştirir:
-
dumb-$Host.UI.SupportsVirtualTerminal = $falseayarlar -
xterm-mono-$PSStyle.OutputRendering = PlainTextayarlar -
xterm-$PSStyle.OutputRendering = PlainTextayarlar
C'den kullanma $PSStyle #
C# geliştiricileri, aşağıdaki örnekte gösterildiği gibi PSStyle'a bir singleton olarak erişebilir.
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,
$PSStyle.OutputRenderingdikkate almak için güncelleştirilir. - ANSI kaçış dizelerini işlemek amacıyla
StringDecoratedtürü eklenmiştir. -
string IsDecoratedboole özelliği, dize veyaESCkarakter dizilerini içerdiğindeC1 CSItrue döndürmek için eklendi. - Bir dizenin
Lengthözelliği, ANSI kaçış dizileri olmadan metnin uzunluğunu döndürür. -
StringDecorated Substring(int contentLength)yöntemi, dizin 0'dan başlayarak ANSI kaçış dizilerinin parçası olmayan içeriğin uzunluğuna kadar 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. yöntemi, parametresi true ise 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. -
FormatHyperlink(string text, uri link)metodu, köprüleri süslemek için kullanılan ANSI kaçış dizilerini içeren bir dize döndürür. Windows Terminaligibi 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, [System.Management.Automation.PSStyle] sınıfına üç 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