検索
ニュース

Microsoft、「PowerShell 7.2 Preview 2」を発表ANSIレンダリングに対応

Microsoftが発表した「PowerShell 7.2 Preview 2」では、ANSIエスケープコードを含むテキスト作成しやすくする新機能を利用できる。

Share
Tweet
LINE
Hatena

 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」のようなネストされた型が含まれる。


$PSStyle変数の設定内容(出典:Microsoft

 ANSIエスケープシーケンスを複数組み合わせて使うこともできる。次の例では警告メッセージを、ボールドでイタリックの黄色に修飾し、ピンクの背景を加えた。


警告メッセージのスタイルをカスタマイズしたところ(出典:Microsoft

 ターミナルが24bitフルカラーをサポートしている場合は、これを利用するための「FromRgb()」メソッドも用意されている。


FromRgb()メソッドを使ったところ(出典:Microsoft

 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.

ページトップに戻る