Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Deskripsi singkat
Menjelaskan dukungan yang tersedia untuk urutan escape ANSI di PowerShell.
Deskripsi panjang
PowerShell memiliki banyak fitur yang mendukung penggunaan urutan escape ANSI untuk mengontrol penyajian output di aplikasi terminal yang menghosting PowerShell.
PowerShell 7.2 menambahkan variabel otomatis baru, $PSStyle, dan perubahan pada mesin PowerShell untuk mendukung output teks yang dihiasi ANSI.
Dukungan Terminal ANSI
Fitur ANSI dirancang agar kompatibel dengan terminal berbasis xterm. Untuk informasi selengkapnya, lihat xterm di Wikipedia.
Pada Windows 10 dan yang lebih tinggi, Host Konsol Windows kompatibel dengan xterm. Aplikasi Terminal Windows
Di macOS, aplikasi terminal default kompatibel dengan xterm.
Untuk Linux, setiap distribusi dikirim dengan aplikasi terminal yang berbeda. Lihat dokumentasi distribusi Anda untuk menemukan aplikasi terminal yang sesuai.
$PSStyle
Variabel memiliki properti berikut:
- Reset - Menonaktifkan semua dekorasi
- Blink - Mengaktifkan Blink
- BlinkOff - Mematikan Blink
- Tebal - Aktifkan Tebal
- BoldOff - Menonaktifkan Tebal
- Dim - Menghidupkan Dim (ditambahkan di PowerShell 7.4)
- DimOff - Menonaktifkan Dim (ditambahkan di PowerShell 7.4)
- Tersembunyi - Aktifkan Tersembunyi
- HiddenOff - Nonaktifkan Tersembunyi
- Terbalik - Mengaktifkan Balik
- ReverseOff - Mematikan fungsi Reverse
- Miring - Mengaktifkan Miring
- ItalicOff - Nonaktifkan Huruf Miring
- Garis Bawah - Mengaktifkan garis bawah
- Garis BawahBuka - Menonaktifkan garis bawah
- Strikethrough - Mengaktifkan coretan
- StrikethroughOff - Mematikan fitur coret
- OutputRendering - Mengontrol kapan penyajian output digunakan
- Pemformatan - Objek berlapis yang mengontrol pemformatan default untuk aliran output
- Kemajuan - Objek berlapis yang mengontrol penyajian bilah kemajuan
FileInfo - Objek berlapis untuk mengontrol pewarnaan objek FileInfo. - Latar Depan - Objek berlapis untuk mengontrol pewarnaan latar depan
- Latar Belakang - Objek berlapis untuk mengontrol pewarnaan latar belakang
Anggota dasar mengembalikan string dari urutan escape ANSI yang dipetakan sesuai dengan namanya. Nilai diatur untuk memungkinkan kustomisasi. Misalnya, Anda bisa mengubah teks tebal menjadi garis bawah. Nama properti memudahkan Anda membuat string yang didekorasi menggunakan penyelesaian tab:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
Anggota berikut mengontrol bagaimana atau kapan pemformatan ANSI digunakan:
$PSStyle.OutputRenderingadalah enumSystem.Management.Automation.OutputRenderingdengan nilai:ANSI: Urutan pelarian ANSI selalu diteruskan melalui as-is.Penting
Anda harus menggunakan mode ANSI
saat mengalihkan output ke file atau alur yang dimaksudkan untuk dijalankan di hilir. Ini memastikan bahwa output tidak diubah. Menggunakan mode lain mengubah output dengan menghapus urutan escape ANSI, yang dapat mengubah perilaku eksekusi. PlainText: Urutan escape ANSI selalu dilucuti sehingga hanya teks biasa. Dalam sesi jarak jauh, jika host jarak jauh disetel padaPlainText, keluaran dihapus dari urutan escape ANSI sebelum mengirimkannya kembali ke klien lokal.Host: Ini adalah perilaku default. Urutan escape ANSI dihapus dari output yang dialihkan atau disalurkan. Untuk informasi selengkapnya, lihat Mengalihkan output.
Anggota
$PSStyle.Backgrounddan$PSStyle.Foregroundadalah string yang berisi urutan escape ANSI untuk 16 warna konsol standar.BlackBrightBlackWhiteBrightWhiteRedBrightRedMagentaBrightMagentaBlueBrightBlueCyanBrightCyanGreenBrightGreenYellowBrightYellow
Nilai dapat diatur dan dapat berisi sejumlah urutan escape ANSI. Ada juga metode
FromRgb()untuk menentukan warna 24-bit. Ada dua cara untuk memanggil metodeFromRgb().string FromRgb(byte red, byte green, byte blue) string FromRgb(int rgb)Salah satu contoh berikut mengatur warna latar belakang warna 24-bit
Beige.$PSStyle.Background.FromRgb(245, 245, 220) $PSStyle.Background.FromRgb(0xf5f5dc)$PSStyle.Formattingadalah objek bersarang untuk mengontrol pemformatan default dari debug, kesalahan, pesan rinci, peringatan, serta header daftar dan tabel. Anda juga dapat mengontrol atribut seperti tebal dan garis bawah. Ini menggantikan$Host.PrivateDatasebagai cara untuk mengelola warna untuk penyajian pemformatan.$Host.PrivateDatatetap ada untuk kompatibilitas dengan versi sebelumnya tetapi tidak terhubung ke$PSStyle.Formatting.$PSStyle.Formattingmemiliki anggota berikut:- FormatAksen - pemformatan untuk item daftar
- ErrorAccent - pemformatan untuk metadata kesalahan
- Kesalahan - pemformatan untuk pesan kesalahan
- Peringatan - pemformatan untuk pesan peringatan
- Verbose - pemformatan untuk pesan verbose
- Debug - pemformatan untuk pesan debug
- TableHeader - pemformatan untuk header tabel
- customTableHeaderLabel - pemformatan untuk header tabel yang sebenarnya bukan properti pada objek
- FeedbackName - pemformatan untuk nama penyedia umpan balik (ditambahkan sebagai fitur eksperimental di PowerShell 7.4)
- FeedbackText - pemformatan untuk pesan umpan balik (ditambahkan sebagai fitur eksperimental di PowerShell 7.4)
- FeedbackAction - pemformatan untuk tindakan yang disarankan penyedia umpan balik (ditambahkan sebagai fitur eksperimental di PowerShell 7.4)
$PSStyle.Progressmemungkinkan Anda mengontrol penyajian bilah tampilan kemajuan.- Gaya
- String ANSI mengatur gaya penyajian. -
MaxWidth - Mengatur lebar maksimum tampilan. Secara otomatis beralih ke
120. Nilai minimum adalah 18. -
Tampilkan - Enum dengan nilai,
Minimal, danClassic.Classicadalah penyajian yang ada tanpa perubahan.Minimaladalah penyajian minimal satu baris.Minimaladalah default. -
UseOSCIndicator - Default ke
$false. Atur ini ke$trueuntuk terminal yang mendukung indikator OSC.
Nota
Jika host tidak mendukung Terminal Virtual,
$PSStyle.Progress.Viewsecara otomatis diatur keClassic.Contoh berikut mengatur gaya rendering ke bilah kemajuan minimal.
$PSStyle.Progress.View = 'Minimal'- Gaya
$PSStyle.FileInfoadalah objek bertingkat untuk mengontrol pewarnaan objek FileInfo.Direktori - Anggota bawaan untuk menentukan warna direktori
SymbolicLink - Anggota bawaan untuk menentukan warna untuk tautan simbolis
executable - Anggota bawaan untuk menentukan warna untuk executable.
Ekstensi - Gunakan anggota ini untuk menentukan warna untuk ekstensi file yang berbeda. Anggota Ekstensi menentukan warna untuk ekstensi file arsip dan PowerShell.
Contoh berikut menunjukkan cara mengubah warna untuk berbagai
FileInfopengaturan dan ekstensi file tertentu. Warna dipilih untuk bekerja dengan baik pada latar belakang terminal ringan.$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
Cmdlet yang menghasilkan output ANSI
- Cmdlet markdown - cmdlet Show-Markdown menampilkan isi file yang berisi teks markdown. Keluaran dihasilkan menggunakan urutan ANSI untuk mewakili gaya yang berbeda. Anda dapat mengelola definisi gaya format menggunakan cmdlet Get-MarkdownOption dan Set-MarkdownOption.
- Cmdlet PSReadLine - modul PSReadLine menggunakan urutan ANSI untuk mewarnai elemen sintaks PowerShell pada baris perintah. Warna dapat dikelola menggunakan Get-PSReadLineOption dan Set-PSReadLineOption.
-
Get-Error- cmdlet Get-Error mengembalikan tampilan terperinci dari objek Kesalahan, yang diformat agar lebih mudah dibaca. -
Select-String- Dimulai dengan PowerShell 7.0, Select-String menggunakan urutan ANSI untuk menyoroti pola yang cocok dalam output. -
Write-Progress- Output ANSI dikelola menggunakan$PSStyle.Progress, seperti yang dijelaskan di atas. Untuk informasi selengkapnya, lihat Write-Progress
Mengalihkan output dalam mode Host
Secara default, $PSStyle.OutputRendering disetel menjadi Host. Urutan escape ANSI dihapus dari output yang dialihkan atau disalurkan.
OutputRendering hanya berlaku untuk penyajian di Host, Out-File, dan Out-String. Keluaran dari eksekusi asli tidak terpengaruh.
PowerShell 7.2.6 mengubah perilaku Out-File dan Out-String untuk skenario berikut:
- Ketika objek input adalah string murni, cmdlet ini menjaga string tetap tidak berubah terlepas dari pengaturan OutputRendering.
- Ketika objek input harus memiliki tampilan pemformatan yang diterapkan padanya, cmdlet ini menyimpan atau menghapus urutan escape dari string output pemformatan berdasarkan pengaturan OutputRendering.
Ini adalah perubahan mendasar dalam cmdlet ini dibandingkan dengan PowerShell 7.2.
OutputRendering tidak berlaku untuk output yang dihasilkan oleh proses host PowerShell, misalnya saat Anda menjalankan pwsh dari baris perintah dan mengalihkan output.
Dalam contoh berikut, PowerShell dijalankan di Linux dari bash. Cmdlet Get-ChildItem menghasilkan teks yang dihiasi ANSI. Karena pengalihan terjadi dalam proses bash, di luar host PowerShell, output tidak terpengaruh oleh OutputRendering.
pwsh -NoProfile -Command 'Get-ChildItem' > out.txt
Saat Anda memeriksa isi dari out.txt, Anda melihat rangkaian escape ANSI.
Sebaliknya, ketika pengalihan terjadi dalam sesi PowerShell, OutputRendering memengaruhi output yang dialihkan.
pwsh -NoProfile -Command 'Get-ChildItem > out.txt'
Saat Anda memeriksa konten out.txt tidak ada urutan escape ANSI.
Menonaktifkan output ANSI
Dukungan untuk urutan escape ANSI dapat dinonaktifkan menggunakan variabel lingkungan TERM atau NO_COLOR.
Nilai $Env:TERM berikut mengubah perilaku sebagai berikut:
-
dumb- menetapkan$Host.UI.SupportsVirtualTerminal = $false -
xterm-mono- menetapkan$PSStyle.OutputRendering = PlainText -
xterm- menetapkan$PSStyle.OutputRendering = PlainText
Jika $Env:NO_COLOR ada, maka $PSStyle.OutputRendering diatur ke PlainText. Untuk informasi selengkapnya tentang variabel lingkungan NO_COLOR, lihat https://no-color.org/.
Menggunakan $PSStyle dari C#
Pengembang C# dapat mengakses PSStyle sebagai singleton, seperti yang ditunjukkan dalam contoh berikut:
string output = $"{PSStyle.Instance.Foreground.Red}{PSStyle.Instance.Bold}Hello{PSStyle.Instance.Reset}";
PSStyle ada di namespace System.Management.Automation.
Mesin PowerShell menyertakan perubahan berikut:
- Sistem pemformatan PowerShell diperbarui untuk menghormati
$PSStyle.OutputRendering. - Jenis
StringDecoratedditambahkan untuk menangani string yang menggunakan pelolosan ANSI. - Properti boolean
ditambahkan untuk mengembalikan true saat string berisi urutan karakter atau . - Properti
Lengthdari string mengembalikan panjang teks tanpa urutan escape ANSI. - Metode
StringDecorated Substring(int contentLength)mengembalikan substring yang dimulai pada indeks 0 hingga panjang konten yang bukan bagian dari urutan escape ANSI. Ini diperlukan untuk pemformatan tabel untuk memotong string dan mempertahankan urutan escape ANSI yang tidak memakan ruang karakter yang dapat dicetak. - Metode
string ToString()tetap sama dan mengembalikan versi teks biasa dari string. - Metode
string ToString(bool Ansi)mengembalikan string tersemat ANSI mentah jika parameterAnsibernilai true. Jika tidak, versi dalam teks biasa yang sudah dihapus urutan escape ANSI menjadi hasilnya. - Metode
FormatHyperlink(string text, uri link)mengembalikan string yang berisi urutan escape ANSI yang digunakan untuk menghias hyperlink. Beberapa host terminal, seperti Windows Terminal, mendukung markup ini, yang membuat teks yang dirender dapat diklik di terminal.
Metode statis kelas PSStyle
PowerShell 7.4 menambahkan tiga metode statis baru ke kelas [System.Management.Automation.PSStyle].
[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)
Metode ini menyediakan cara untuk mengonversi nilai ConsoleColor ke urutan escape ANSI untuk warna latar depan dan latar belakang atau untuk kombinasi keduanya.
Contoh berikut menunjukkan urutan escape ANSI yang dihasilkan oleh metode ini.
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