[PowerShell] .NET Core Global Toolsを使ったPowerShell Coreのインストールがサポートされました

PowerShell Core

しばたです。

以前Developers.IOでお知らせした.NET Core Global Toolsを使ったPowerShell Coreのインストールですが、Nugetパッケージの事前ダウンロードが不要となりdotnet tool installコマンド一発でできる様になりました。

.NET Core 3.0 SDK Docker ImageにPowerShell Coreが含まれました

PowerShell Team Blogでのアナウンスがこちらになります。

やってみた

以下の環境で試してみます。

  • 64bit版 Windows 10 May 2019 Update (1903)
  • .NET Core SDK 2.2.301 (現時点での最新Stableバージョン) インストール済み
    • Visual Studioなどの開発ツールは未インストール

インストール

PowerShell Team Blogにある通りdotnet tool installコマンドを実行してみます。

dotnet tool install --global PowerShell

さほど待ち時間もなくあっさりコマンドは終了しました。

PowerShell Coreのインストール場所

インストールしたPowerShell Coreを起動する前にどこにインストールされたか確認してみます。

どうやら[ユーザープロファイル]\.dotnet\tools\配下にインストールされている様です。
Explorerで見ると、該当フォルダにはpwsh.exeだけありました。

その他アセンブリはさらに深い階層にバージョン別に保存されています。

PowerShell Coreは.NET Core 2.1製でSelf-containedな形でアプリケーションが丸ごとNugetパッケージに登録されています。
このため今回の環境の様にインストール元になる.NET Core SDKのランタイムバージョンは2.1でなくても構いません。

PowerShell Coreを起動してみる

.NET Core Global Toolsからインストールした場合はスタートメニューにアプリケーション情報は登録されません。
また、.NET Core Toolsのパスがユーザー環境変数のPATH環境変数に登録されているもののシステム環境変数ではないのでスタートメニューの検索ウィンドウから起動することもできません。

このためPowerShell CoreはコマンドプロンプトやWindows PowerShellから起動する必要があります。

ここで今回の環境ではWindows PowerShellからPowerShell Coreを起動した際にフォントがConsolasになり日本語の表記が化ける事象が発生しました。

こちらはフォント設定をMSゴシックなどのフォントにしてやれば解決します。

あとはいつものPowerShell Coreですのでいつも通りに使っていきましょう。
ただし、インストール先が通常のインストーラーでインストールした場合と異なりますので以下のパスには気をつけてください。

  • $PSHOME
  • ALL Usersなプロファイル

最後に

ざっとこんな感じです。

PowerShellを常用する私にとってはインストーラーからインストールする方が便利に使えると感じましたが、PowerShellを開発時にしか使わない方にとっては.NET Core Global Toolsからインストールする方がよりシンプルで良いでしょう。
環境やユースケースによってインストール方法を使い分けるのが良いと思います。