Microsoft、「PowerShell 7.2 Preview 2」を発表:ANSIレンダリングに対応
Microsoftが発表した「PowerShell 7.2 Preview 2」では、ANSIエスケープコードを含むテキスト作成しやすくする新機能を利用できる。
Microsoftは2020年12月15日(米国時間)、「PowerShell 7.2 Preview 2」を発表した。
PowerShell 7.2は、「.NET 6」がベースになる予定だ。だが、.NET 6の最初のプレビュー版がまだリリースされていないため、PowerShell 7.2 Preview 2は、まだ「.NET 5」をベースにしている。
PowerShell 7.2 Preview 2では、コードのクリーンアップやバグ修正が施され、幾つかの新機能が搭載された。新機能の概要は次の通り。
ANSIレンダリングのための「$PSStyle」自動変数を追加
「PSAnsiRendering」という実験的機能で新しい「$PSStyle」自動変数を追加した。この変数は2つの目的で使用される。
目的の一つは、テキスト修飾を制御するANSIエスケープコードを含むテキストコンテンツを作成しやすくすることだ。色やボールド、イタリックなどの修飾を制御できる。
次の例は、$PSStyleの内容をダンプし、使用可能なメンバーと、テキストに対するそれらの効果、実際のANSIエスケープシーケンスの文字列を示している。なお、この変数のカスタム書式設定には、「Formatting」「Foreground」「Background」のようなネストされた型が含まれる。
ANSIエスケープシーケンスを複数組み合わせて使うこともできる。次の例では警告メッセージを、ボールドでイタリックの黄色に修飾し、ピンクの背景を加えた。
ターミナルが24bitフルカラーをサポートしている場合は、これを利用するための「FromRgb()」メソッドも用意されている。
C#モジュールの作成者は次のように、「System.Management.Automation」名前空間で「PSStyle」シングルトンクラスを使用することで、$PSStyleを利用できる。
string text = $"{PSStyle.Instance.Reverse}{PSStyle.Instance.Foreground.Green}PowerShell{PSStyle.Instance.Foreground.Yellow} Rocks!{PSStyle.Instance.Reset}";
ANSIエスケープシーケンスを含む文字列の出力を設定する
「$PSStyle.OutputRendering」を次の値に設定することで、PowerShellが、ANSIエスケープシーケンスを含む文字列をどのように出力するのかを制御できる。
- Automatic
デフォルトの設定。ターミナルがANSIエスケープシーケンスをサポートする場合、ホストまたはパイプラインを介して、そのままテキストを出力する。これはLinuxと同様の挙動だ。ターミナルがANSIエスケープシーケンスをサポートしていない場合、出力はプレーンテキストになる。
- Ansi
ホスト、パイプラインのどちらであってもテキストを、そのまま出力する。
- PlainText
ホスト、パイプラインのどちらであっても、ANSIエスケープシーケンスを除去して出力する。
- Host
ANSIエスケープシーケンスがサポートされている場合、テキストがホストに送られるときは、テキストをそのまま出力する。出力がパイプラインを介して送られるか、またはリダイレクトされるときは、プレーンテキストを出力する。これはmacOSと同様の挙動だ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 【 Get-PSDrive 】コマンドレット――PowerShellで利用可能なドライブの情報を取得する
本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Get-PSDrive」コマンドレットを解説します。 - Microsoft、「PowerShell 7.1」の最初のプレビュー版を公開
Microsoftは、「PowerShell 7.1」の最初のプレビュー版を公開した。「Windows PowerShell」のオープンソースエディション「PowerShell Core」の次期マイナーアップデートバージョンという位置付けだ。 - Microsoft、「PowerShell 7.0」を正式リリース
Microsoftは、「PowerShell 7.0」の一般提供を開始した。「Windows PowerShell」のオープンソースエディション「PowerShell Core」の最新メジャーバージョンという位置付けだ。次期7.1の開発も進んでいるという。