PowerShellでエスケープシーケンスが効かない?色が変わらない原因と解決策

Windows

「PowerShellでANSIエスケープシーケンスを使って色を変えたいのに、全く反映されない……」

そんな経験はありませんか?
実は、これは設定や使用環境によるもので、少しの工夫で簡単に解決できます。

本記事では、Windows PowerShellで色が変わらない原因と、その具体的な対処法を解説します。

スポンサーリンク

よくある原因

1. PowerShellのバージョンが古い

PowerShell 5.1以前では、ANSIエスケープシーケンスが標準でサポートされていないことがあります。PowerShell 7以降を使用すると、対応状況が大幅に改善されます。

2. Windowsコンソールがレガシーモード

古いコンソールではANSIシーケンスが無視されます。

PowerShellのプロパティから「レガシ コンソールを使用する」のチェックを外しましょう。

3. 使用している端末が非対応

cmd.exeや古いPowerShellウィンドウでは表示が制限されることがあります。

Windows Terminalの使用がおすすめです。

確認すべき設定

PowerShellのバージョン確認

$PSVersionTable.PSVersion

PowerShell 7.0以上であることを確認してください。

開いているPowerShell自体がバージョン7の方かも確認してください。

コンソールモードの確認と変更

  • PowerShellのウィンドウを右クリック → プロパティを開く
  • 「レガシ コンソールを使用する」にチェックが入っていないか確認

レジストリ設定の確認(上級者向け)

HKEY_CURRENT_USER\Console
VirtualTerminalLevel = 1

これが存在しないか、値が0なら、新規作成または修正します。

正しい使い方の例

Write-Host "青い文字です"

 はエスケープシーケンスの開始コード(ESC)です。

トラブル解決チェックリスト

チェック項目対応方法
PowerShellのバージョン7.0以上か確認
コンソールの種類Windows Terminal推奨
レガシーモード無効に設定
レジストリVirtualTerminalLevelを1に設定

まとめ

PowerShellで色が変わらない場合、多くは設定や使用環境に原因があります。バージョンの確認やWindows Terminalの導入、レガシーモードの解除によって、問題は解決可能です。

エスケープシーケンスが正常に機能すれば、より視覚的に分かりやすいスクリプト作成が実現します。

コメント

タイトルとURLをコピーしました