深海なPowerShellにPowerShellをPowerSehllする。(Windows ColorTool & ConEmu)

#はじめに
実行ポリシーを変更していない場合は、次のコマンドを予めエンターしておくのじゃよ。

```
PS >Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force
```
上のコマンドでは現在のウィンドウでのみExecutionPolicyをRemoteSignedに変更します。新しいウィンドウを開いた場合ExecutionPolicyはもとに戻ります。
恒久的に「RemoteSigned」にする場合は、

```
PS >Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -Force
```

#第一章 デフォのPowerShellは浅すぎませんか？

####「Iceberg」を手に入れるのじゃ！
#####下記webサイトにアクセスし、下の画像の赤枠の部分をコピーするのじゃ。

https://gist.github.com/cocopon/1d481941907d12db7a0df2f8806cfd41#file-xresources

![ps_iceberg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/05206e13-6066-2710-97a5-1d3de3a0f8e8.png)

#####へんかん？hennkan？変換するのじゃ！

下のURLの記事の「4.」でさっきコピーしたのをペーストするのじゃ。

https://qiita.com/Suzukaze31/items/f3b0110afe2397e2e1bb

「9.」まで終わらせるのじゃよ。

ダウンロードした「terminal.sexy.itermcolors」を「iceberg.itermcolors」に名前を変更するのじゃ！

####次にToolを手に入れるのじゃ！
(https://github.com/microsoft/terminal/archive/1904.29002.zip) クリックするとダウンロードが始まります。(2019/04/30のリリース）

ダウンロードした圧縮ファイルを解凍するのじゃ！

解凍してできた「ColorTool」フォルダを開いて、「schemes」フォルダを開くのじゃ！

ダウンロードした「terminal.sexy.itermcolors」を「schemes」に移動させるのじゃ！

そして「ColorTool」フォルダを「Program Files」に移動するのじゃ！

PowerShellを開くのじゃ！開き方がわからない？？「Ctrl + r」をおして「powershell」と打ってEnterを押すのじゃ！

そして次の２つのコマンドを実行するのじゃ！

```
PS >set-location C:\Program` Files\ColorTool

PS >.\ColorTool.exe -s
```

２つ目のコマンドで`iceberg.itermcolors`というのが出てくるのが確認できたら、

```
PS >.\ColorTool.exe -b iceberg.itermcolors
```

これで設定完了。次のようになったはずじゃ！

![ps_iceberg3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/0b8d863a-4d4c-986f-3145-f064ca168824.png)

しかしちともの足りないじゃろ？そうプロンプトが白一色なのじゃ！だからプロンプトをカスタマイズしたい人は第二章に行くのじゃ！


####真っピンク(ないし濃紺ではない色)になっちゃった君は、次のようにするのじゃ！
ウィンドウの上の「Windows PowerShell」と書かれている上の白い枠の上で右クリックして「Defaults」をクリックして、下の画像の通りにするのじゃ！

![ps_iceberg2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/d3ab4f14-b880-8781-4e02-1b11d1c2e3da.png)


次にまたウィンドウの上の「Windows PowerShell」と書かれている上の白い枠の上で右クリックして今度は、「Properties」をクリックして、上の画像の通りにするのじゃ！

そして、一度すべての「Windows PowerShell」ウィンドウをとじて新しいウィンドウを開くと、うまくできているはずじゃ！

#第二章 さらなる深みを目指すのじゃ！
～～ナレーション～～
さきほど、PowerShellをカスタマイズしましたが、ここではコンソールエミュレータの「ConEmu」を使います。そしてパッケージマネージャーである「Chocolatey」をインストールします。
～～ナレーションおわり～～

####まず必要なものをインストールするのじゃ！

#####その１.Chocolateyをインストールするのじゃ！

```
PS >iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
```

#####その２.Chocolateyを使って必要なパッケージをインストールするのじゃ！

```
PS >choco install git.install -y
PS >choco install conemu -y
```

#####その３.PowerShellモジュールをインストールするのじゃ！
下の四つのコマンドを一つずつ実行していくのじゃ！

```
PS >Install-PackageProvider NuGet -MinimumVersion '2.8.5.201' -Force
PS >Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
PS >Install-Module -Name 'posh-git'
PS >Install-Module -AllowClobber Get-ChildItemColor
```

####ConEmuを開いて初期設定じゃ！
#####その１.ひらけConEmu!
![ps_iceberg5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/62a6bf7c-f881-64cd-9095-f6058e239c19.png)


#####その２.OK?OKじゃ！
![ps_iceberg4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/186b1a7c-4d57-8c8f-adbf-b38802092b53.png)


#####その３.設定ウィンドウをひらけごま！
![ps_iceberg6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/48be9a8f-5901-dced-c684-3274da06e69f.png)


#####その４.シングルインスタンスモード ON!
![ps_iceberg7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/a69ab151-541b-c5a3-29b7-17bad88991b8.png)

チェックを入れることによって新しいインスタンスを実行するとき、新しいウィンドウを作るのではなく既存のウィンドウに新しいタブを作成します。

#####その５.PowerShellを使うのじゃ！
![ps_iceberg9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/8a3278f1-8f8d-c229-6c1c-1c54844fbf5f.png)


#####その６.カラースキームは「Iceberg」にするのじゃ！
PowerShellを開いて、次の２つのコマンドを実行するのじゃ！

```
PS >Set-Location C:\Users\ユーザーネーム\AppData\Roaming
PS >notepad iceberg.xml
```

「iceberg.xml」というファイルはもともとないはずなので新しくつくるか聞かれたら「はい」とするのじゃよ。

そしてノートパッドが開いたら、この記事の一番下にある「iceberg.xml」ファイルのテキストをすべてコピーして開いたノートパッドにペーストするのじゃ！

そして下の画像の様に「General」、「Choose color scheme」で一番下にある「iceberg」を選択するのじゃ！
![ps_iceberg12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/448552/fe134fe0-c736-02a8-31a8-17d9dabc83db.png)

####プロファイルを作成するのじゃ！
#####その１.PowerShellを開くのじゃ！
そして`notepad $PROFILE`を実行するのじゃ。そして、下記のテキストを記述するのじゃ！

```
# ConEmu
Import-Module -Name posh-git
Import-Module Get-ChildItemColor
Set-Alias ls color-ls -option AllScope -Force
Set-Alias dir color-ls -option AllScope -Force
```

#####その２.プロンプトをカスタマイズするのじゃ！
ここではまずサンプルとして 、[Joon's Blog](https://joonro.github.io/blog/posts/powershell-customizations.html#)を参考にするのじゃ！

ここでは上手くいくか確認するためにそのまま使うがここから自分好みにカスタムしていくのじゃよ。

下記テキストを一つ上の「その１.PowerShellを開くのじゃ！」でペーストした四行の下にペーストするのじゃ！

```
#Profile
function Test-Administrator {
    $user = [Security.Principal.WindowsIdentity]::GetCurrent();
    (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

function prompt {
    # https://github.com/dahlbyk/posh-git/wiki/Customizing-Your-PowerShell-Prompt
    $origLastExitCode = $LastExitCode
    Write-VcsStatus

    if (Test-Administrator) {  # if elevated
        Write-Host "(Elevated) " -NoNewline -ForegroundColor White
    }

    Write-Host "$env:USERNAME@" -NoNewline -ForegroundColor DarkYellow
    Write-Host "$env:COMPUTERNAME" -NoNewline -ForegroundColor Magenta
    Write-Host " : " -NoNewline -ForegroundColor DarkGray

    $curPath = $ExecutionContext.SessionState.Path.CurrentLocation.Path
    if ($curPath.ToLower().StartsWith($Home.ToLower()))
    {
        $curPath = "~" + $curPath.SubString($Home.Length)
    }

    Write-Host $curPath -NoNewline -ForegroundColor Blue
    Write-Host " : " -NoNewline -ForegroundColor DarkGray
    Write-Host (Get-Date -Format G) -NoNewline -ForegroundColor DarkMagenta
    Write-Host " : " -NoNewline -ForegroundColor DarkGray
    $LastExitCode = $origLastExitCode
    "`n$('>' * ($nestedPromptLevel + 1)) "
}

Import-Module posh-git

$global:GitPromptSettings.BeforeText = '['
$global:GitPromptSettings.AfterText  = '] '
```

さて一度ConEmuを閉じてもう一度開くのじゃ！

クールで深海なConEmuができたじゃろう。

ここから、
「Settings」>「Size & Pos」>「Window size」でウィンドウサイズを調整するのじゃ！
「Settings」>「Fonts」>「Main console font」でフォントをお気にのフォントに変更するのじゃ！

#おわりに(重要)
タイトルで「深海な」と書きましたが、テーマは「iceberg」つまり氷山です。
深い、浅いとは色の濃さのことです。
むかし、仙人なりたかったので仙人の気分で書きました。
仙人はもう飽きたので、つぎに仙人になりっきて記事を書くことはないと思います。

#～重要～追記
「その２.プロンプトをカスタマイズするのじゃ！」でペーストした「$PROFILE」に下記テキストも追加してください。

```
function color-ls
{
    $regex_opts = ([System.Text.RegularExpressions.RegexOptions]::IgnoreCase `
          -bor [System.Text.RegularExpressions.RegexOptions]::Compiled)
    $fore = $Host.UI.RawUI.ForegroundColor
    $compressed = New-Object System.Text.RegularExpressions.Regex(
          '\.(zip|tar|gz|rar|jar|war)$', $regex_opts)
    $executable = New-Object System.Text.RegularExpressions.Regex(
          '\.(exe|bat|cmd|py|pl|ps1|psm1|vbs|rb|reg)$', $regex_opts)
    $text_files = New-Object System.Text.RegularExpressions.Regex(
          '\.(txt|cfg|conf|ini|csv|log|xml|java|c|cpp|cs)$', $regex_opts)

    Invoke-Expression ("Get-ChildItem $args") | ForEach-Object {
        if ($_.GetType().Name -eq 'DirectoryInfo') 
        {
            $Host.UI.RawUI.ForegroundColor = 'Magenta'
            echo $_
            $Host.UI.RawUI.ForegroundColor = $fore
        }
        elseif ($compressed.IsMatch($_.Name)) 
        {
            $Host.UI.RawUI.ForegroundColor = 'darkgreen'
            echo $_
            $Host.UI.RawUI.ForegroundColor = $fore
        }
        elseif ($executable.IsMatch($_.Name))
        {
            $Host.UI.RawUI.ForegroundColor = 'Red'
            echo $_
            $Host.UI.RawUI.ForegroundColor = $fore
        }
        elseif ($text_files.IsMatch($_.Name))
        {
            $Host.UI.RawUI.ForegroundColor = 'Yellow'
            echo $_
            $Host.UI.RawUI.ForegroundColor = $fore
        }
        else
        {
            echo $_
        }
    }
}
```



#参考
https://devblogs.microsoft.com/commandline/introducing-the-windows-console-colortool/
https://github.com/microsoft/terminal/releases/tag/1904.29002
https://hodgkins.io/ultimate-powershell-prompt-and-git-setup
https://joonro.github.io/blog/posts/powershell-customizations.html#

#iceberg.xml
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Ansi 0 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.12941176470588237</real>
		<key>Green Component</key>
		<real>0.09411764705882353</real>
		<key>Red Component</key>
		<real>0.08627450980392157</real>
	</dict>
	<key>Ansi 1 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.47058823529411764</real>
		<key>Green Component</key>
		<real>0.47058823529411764</real>
		<key>Red Component</key>
		<real>0.8862745098039215</real>
	</dict>
	<key>Ansi 10 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.5568627450980392</real>
		<key>Green Component</key>
		<real>0.792156862745098</real>
		<key>Red Component</key>
		<real>0.7529411764705882</real>
	</dict>
	<key>Ansi 11 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.5372549019607843</real>
		<key>Green Component</key>
		<real>0.6941176470588235</real>
		<key>Red Component</key>
		<real>0.9137254901960784</real>
	</dict>
	<key>Ansi 12 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8196078431372549</real>
		<key>Green Component</key>
		<real>0.6745098039215687</real>
		<key>Red Component</key>
		<real>0.5686274509803921</real>
	</dict>
	<key>Ansi 13 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8274509803921568</real>
		<key>Green Component</key>
		<real>0.6274509803921569</real>
		<key>Red Component</key>
		<real>0.6784313725490196</real>
	</dict>
	<key>Ansi 14 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.807843137254902</real>
		<key>Green Component</key>
		<real>0.7686274509803922</real>
		<key>Red Component</key>
		<real>0.5843137254901961</real>
	</dict>
	<key>Ansi 15 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8705882352941177</real>
		<key>Green Component</key>
		<real>0.8313725490196079</real>
		<key>Red Component</key>
		<real>0.8235294117647058</real>
	</dict>
	<key>Ansi 2 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.5098039215686274</real>
		<key>Green Component</key>
		<real>0.7450980392156863</real>
		<key>Red Component</key>
		<real>0.7058823529411765</real>
	</dict>
	<key>Ansi 3 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.47058823529411764</real>
		<key>Green Component</key>
		<real>0.6431372549019608</real>
		<key>Red Component</key>
		<real>0.8862745098039215</real>
	</dict>
	<key>Ansi 4 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.7764705882352941</real>
		<key>Green Component</key>
		<real>0.6274509803921569</real>
		<key>Red Component</key>
		<real>0.5176470588235295</real>
	</dict>
	<key>Ansi 5 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.7803921568627451</real>
		<key>Green Component</key>
		<real>0.5764705882352941</real>
		<key>Red Component</key>
		<real>0.6274509803921569</real>
	</dict>
	<key>Ansi 6 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.7607843137254902</real>
		<key>Green Component</key>
		<real>0.7215686274509804</real>
		<key>Red Component</key>
		<real>0.5372549019607843</real>
	</dict>
	<key>Ansi 7 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8196078431372549</real>
		<key>Green Component</key>
		<real>0.7843137254901961</real>
		<key>Red Component</key>
		<real>0.7764705882352941</real>
	</dict>
	<key>Ansi 8 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.5372549019607843</real>
		<key>Green Component</key>
		<real>0.4392156862745098</real>
		<key>Red Component</key>
		<real>0.4196078431372549</real>
	</dict>
	<key>Ansi 9 Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.5372549019607843</real>
		<key>Green Component</key>
		<real>0.5372549019607843</real>
		<key>Red Component</key>
		<real>0.9137254901960784</real>
	</dict>
	<key>Background Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.12941176470588237</real>
		<key>Green Component</key>
		<real>0.09411764705882353</real>
		<key>Red Component</key>
		<real>0.08627450980392157</real>
	</dict>
	<key>Bold Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8196078431372549</real>
		<key>Green Component</key>
		<real>0.7843137254901961</real>
		<key>Red Component</key>
		<real>0.7764705882352941</real>
	</dict>
	<key>Cursor Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8196078431372549</real>
		<key>Green Component</key>
		<real>0.7843137254901961</real>
		<key>Red Component</key>
		<real>0.7764705882352941</real>
	</dict>
	<key>Cursor Text Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.12941176470588237</real>
		<key>Green Component</key>
		<real>0.09411764705882353</real>
		<key>Red Component</key>
		<real>0.08627450980392157</real>
	</dict>
	<key>Foreground Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8196078431372549</real>
		<key>Green Component</key>
		<real>0.7843137254901961</real>
		<key>Red Component</key>
		<real>0.7764705882352941</real>
	</dict>
	<key>Selected Text Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.8196078431372549</real>
		<key>Green Component</key>
		<real>0.7843137254901961</real>
		<key>Red Component</key>
		<real>0.7764705882352941</real>
	</dict>
	<key>Selection Color</key>
	<dict>
		<key>Color Space</key>
		<string>sRGB</string>
		<key>Blue Component</key>
		<real>0.12941176470588237</real>
		<key>Green Component</key>
		<real>0.09411764705882353</real>
		<key>Red Component</key>
		<real>0.08627450980392157</real>
	</dict>
</dict>
</plist>
```