しばたテックブログスマートフォン用の表示で見るしばたテックブログPowerShellを中心に気分で書いている技術ブログです。Linuxちょっと面白いIssueを見つけたので。github.comこのIssue自体は以下の様に前景色にDarkYellowを指定した場合に表示される色がおかしいというものです。DarkYellow確かにWindowsで試すと下図の様に黄色ではなく灰色が表示されます。PowerShellにおけるコンソールの表示色についてIssue内でも回答されていますが、これはバグではなく仕様です。PowerShellに限らずコンソールプログラム全般の仕様でもあります。Whiteの16色あります。これらの色はPowerShellのプロパティ"画面の色"タブにあるカラーパレットに対応しており、カラーパレットの色を変えるとコンソールの表示色も変わります。}下図の様になりカラーパレットの色と一致します。問題となったDarkYellowは左から7番目のボックスとなり灰色(238,237,240)が設定されてるため名前と実際の色が一致しない事になっています。ちなみにコマンドプロンプトの場合は黄色(128,128,0)が割り当てられておりPowerShellで(238,237,240)に変更されています。このほかに6番目のボックスもマゼンタ(128,0,128)から(1,36,86)と変更されています。使用頻度の低い色をPowerShell用にカスタマイズしている様です。Linux(Mac)についても調べてみます。例としてUbuntu上のPowerShellで最初のコードを実行すると、以下の図の様になり良い感じの黄色が表示されます。当然ですがLinuxやMacには先ほどのカラーパレットはありません。Coreによって対応するANSIエスケープシーケンスに置き換えられてコンソールに表示されます。変換テーブルがConsolePal.Unix.csの_consoleColorToAnsiCodeに以下の様に定義されています。"\033[33m■■■\033[m"と変換されるイメージです。ISEについて調べてみます。ISEで最初のコードを試した結果は以下の様になり、こちらも良い感じの黄色が表示されます。ISEでは[System.ConsoleColor]の各色を独自の変換テーブルで[System.Windows.Media.Color]に変換します。変換テーブルはMicrosoft.PowerShell.GPowerShell.dllのMicrosoft.Windows.PowerShell.Gui.Internal.GPSHostRawUserInterfaceクラスに定義されており、残念ながらこのクラスはオープンソース化していないためILSpy等で中身を見てみると以下の様になっていることがわかります。Colors.White};ここからDarkYellowは(170,170,0)に変換されることがわかります。他の色は定義済みの色なのでそのままですね。6.0でアイコンが新しくなる話とPosh-ChanことPowerShellさん...ちょっとしたことですが意外と大きな変化です。広告スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。