LoginSignup
3
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-02

はじめに

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

PS >Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force

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

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

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

「Iceberg」を手に入れるのじゃ!

下記webサイトにアクセスし、下の画像の赤枠の部分をコピーするのじゃ。

ps_iceberg.png

へんかん?hennkan?変換するのじゃ!

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

「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を押すのじゃ!

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

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

PS >.\ColorTool.exe -s

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

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

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

ps_iceberg3.png

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

真っピンク(ないし濃紺ではない色)になっちゃった君は、次のようにするのじゃ!

ウィンドウの上の「Windows PowerShell」と書かれている上の白い枠の上で右クリックして「Defaults」をクリックして、下の画像の通りにするのじゃ!

ps_iceberg2.png

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

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

第二章 さらなる深みを目指すのじゃ!

~~ナレーション~~
さきほど、PowerShellをカスタマイズしましたが、ここではコンソールエミュレータの「ConEmu」を使います。そしてパッケージマネージャーである「Chocolatey」をインストールします。
~~ナレーションおわり~~

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

その1.Chocolateyをインストールするのじゃ!
PS >iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
その2.Chocolateyを使って必要なパッケージをインストールするのじゃ!
PS >choco install git.install -y
PS >choco install conemu -y
その3.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を開いて初期設定じゃ!

その1.ひらけConEmu!

ps_iceberg5.png

その2.OK?OKじゃ!

ps_iceberg4.png

その3.設定ウィンドウをひらけごま!

ps_iceberg6.png

その4.シングルインスタンスモード ON!

ps_iceberg7.png

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

その5.PowerShellを使うのじゃ!

ps_iceberg9.png

その6.カラースキームは「Iceberg」にするのじゃ!

PowerShellを開いて、次の2つのコマンドを実行するのじゃ!

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

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

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

そして下の画像の様に「General」、「Choose color scheme」で一番下にある「iceberg」を選択するのじゃ!
ps_iceberg12.png

プロファイルを作成するのじゃ!

その1.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
その2.プロンプトをカスタマイズするのじゃ!

ここではまずサンプルとして 、Joon's Blogを参考にするのじゃ!

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

下記テキストを一つ上の「その1.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」つまり氷山です。
深い、浅いとは色の濃さのことです。
むかし、仙人なりたかったので仙人の気分で書きました。
仙人はもう飽きたので、つぎに仙人になりっきて記事を書くことはないと思います。

~重要~追記

「その2.プロンプトをカスタマイズするのじゃ!」でペーストした「$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>
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3