21Powershellをカスタマイズしてイケイケにする方法Windows.NETPowerShell.NETFramework皆さん、Powershell使ってますか?今時cmd.exeをメインで使っている人間はいないと思いますけれど、minttyあたりは使っている人がいるかもしれませんね。あなたがPowershellを使っていないとしたら、それはとてももったいないことです。Powershellは、Windowsでできることなら大抵のことができます。Powershellのカスタマイズを始めようでは、早速Powershellをカスタマイズしていきましょう。Powershellを開いてください。次のコマンドを打ちます。$PROFILEこのコマンドを打って、エラーが出た人は次のコマンドを続けて打ってください。$PROFILEさて、これで準備は完了です。$PROFILEという変数は、現在のホストにおける現在のユーザーのPowershellの初期化スクリプトのパスを示しています。このパスに好きなPowershellスクリプトを置いておけば、Powershellを起動するたびに自動で実行されるというわけ。必要最低限のPowershellのカスタマイズまず、Powershellにはイケてない仕様があります。それは、現在のディレクトリ(カレントディレクトリ)がコマンド検索パスに入っていないというものです。そこで、それをまず変えます。適当なエディタでPowershellのProfileを開いてください。$PROFILEで見ることができます。開いたら、先頭に次のコマンドを追記してください。";."}これで、現在のディレクトリがコマンド検索パスに入るようになりました。$env:というのは、Windowsの環境変数にアクセスするときにつけるプレフィクスです。$env:環境変数名とすると、任意の環境変数を参照できます。続けて、「管理者権限でコマンドを実行」を簡単にできるようにしたいですね。PowershellのProfileには、関数の定義を書くこともできます。Run-AsAdmin関数の定義はこんな感じです。-Option:"None"1回Powershellの起動を挟んでいるのは、Powershellコマンドにも対応するためです。そのあとのSet-Alias行は、この関数をsudoで呼び出せるようにしているだけですね。value1みたいな感じで呼び出せるようになります。プロンプト文字列を変えたいPowershellはBashやcmd.exeなどのようにプロンプト文字列を変えることができます。やって変えるのでしょうか。引数をとらない関数、promptを定義すればいいのです。これはAliasでもいいので、適当にそれっぽい文字列を表示するプログラムを作って、Set-Aliasでpromptという名前のaliasに設定することでも変えられます。これは各自自由に変えればいいと思います。一例として、私の設定をおいておきます。-Option:"None"prompt関数は、コマンドの実行が終了した直後に呼ばれます。この性質を利用すると、直前のコマンドの実行結果で表示内容を変えたりすることもできます。深くWARNING!!このセクションにはレジストリの編集など、ちょっとヤバめの内容も含まれています。それでもいい方は読み進めてください。Powershellの色を変えるPowershell上で使える色は、次にあげる16色です。BlackDarkBlueDarkGreenDarkCyanDarkRedDarkMagentaDarkYellowGrayDarkGrayBlueGreenCyanRedMagentaYellowWhiteさて、この色をRGBで表すと、それぞれどんな色なのでしょうか。その答えは、レジストリ上のHKCU\Consoleにあります。このキーの中のColorTable00~ColorTable15に対応する色のrgb表現が入っています。私の環境では、こんな感じでした。ここで注意しなければいけないのは、普通のRGBの16進表記とは違い、BGRの順番だということです。0xffffffさて、実際に色を変えてみましょう。次のコマンドを打ってください。このセクションは、すべてこのコマンドを打った後に実行しているものとして話を進めます。'_'))"次に、ここの値を書き換えるコマンドを打っていきたいと思います。Powershellのコンソールの色を決めているのは、このキーのScreenColorsというプロパティです。ここに、16進2桁でカラーテーブルから使う色の番号を入れます。この値がたとえば0x56であれば、背景色にColorTable05の色を、文字色にColorTable06の色を使う、ということです。この値を、0x06に変えてみます。-Value:0x061つだけ注意なのですが、これはレジストリを弄っているので、Powershellを再起動しないと変更が反映されません。現在のセッションではそのままだと思いますが、Powershellを新しく開くと背景色が黒くなっているはずです。ところで、先に挙げたカラースキーマは、コンピュータ全体で共有なのでしょうか。いいえ、そんなことはありません。実は、これはコンソールアプリケーションごとにオーバーライドすることができます。次のようにするとBlackの色を0x000000から0x2e1e1eに変えられます。-Value:0x2e1e1eこのようにして、自分の好きなカラースキーマを適用することができます。設定を適用するさて、最後に設定を適用しましょう。$PROFILEこれで終わりです。upLoginユーザーは見つかりませんでした。