「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のウィンドウを右クリック → プロパティを開く
- 「レガシ コンソールを使用する」にチェックが入っていないか確認
レジストリ設定の確認(上級者向け)
HKEY_CURRENT_USER\Console
VirtualTerminalLevel = 1
これが存在しないか、値が0なら、新規作成または修正します。
正しい使い方の例
Write-Host "[34m青い文字です[0m"
※ はエスケープシーケンスの開始コード(ESC)です。
トラブル解決チェックリスト
チェック項目 | 対応方法 |
---|---|
PowerShellのバージョン | 7.0以上か確認 |
コンソールの種類 | Windows Terminal推奨 |
レガシーモード | 無効に設定 |
レジストリ | VirtualTerminalLevelを1に設定 |
まとめ
PowerShellで色が変わらない場合、多くは設定や使用環境に原因があります。バージョンの確認やWindows Terminalの導入、レガシーモードの解除によって、問題は解決可能です。
エスケープシーケンスが正常に機能すれば、より視覚的に分かりやすいスクリプト作成が実現します。
コメント