Powershell

PowerShell5.1から6.2へのアップデート

Powershell

PowerShellのバージョンは6にアップすることをオススメします。理由は文字コードのデフォルト設定が「UTF8」に変更になったことです。これまでは文字コードが「UTF8 BOM」になっていたため色々とトラブルの原因にもなっていました。(特に複数人でエディタがバラバラの場合など)

今回、私の仮想環境内で動作しているWindows10のPowershellを6.2にアップしたためその手順を紹介します。

現バージョン確認

アップデート前はこんな感じです。

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      5.1.18362.145
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.145
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

ちなみに文字コードが「UTF8」だとこんな感じに文字化けします。文字化けして実行もできません。これがなかなかイラつくのです。

> powershell.exe .¥replace.ps1
発生場所 ¥¥Mac¥Home¥Desktop¥PowerShell¥replace.ps1:19 文字:49
+ Write-host '?繧貞叙繧企勁縺・繧ィ繧ケ繧ア繝シ繝玲枚蟄・繝舌ャ繧ッ繧ケ繝ゥ繝・す繝・)¥縺悟ソ・ヲ・
+                                                 ~
式またはステートメントのトークン ')' を使用できません。
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : UnexpectedToken

ちなみにファイルの文字コードが「UTF8 BOMあり」であれば正しく表示されます。

> powershell.exe .¥replace.ps1
Test1:replaceを使って文字列置換
ハイフンを取り除く

Githubからのインストーラーダウンロード

PowerShell 6 からはGithubで公開されています
https://github.com/PowerShell/PowerShell/releases

2019年12月時点ではすでにVersion7のRC版も出てまずが、今回はVersion 6を探し出します。

インストーラーをダウンロードします。

インストーラーをクリックすると、奇妙なキャラクターが出てきて変なソフトか?と思いましたが大丈夫です。Poewrshellの公式キャラクターでした、名称はそのまま「Powershell」みたいです。顔の部分がPowerShellのアイコンみたいになってますね。
そのままインストールを進めます。

インストール完了しました。プログラムを確認すると既存のPowerShellの上書きではなく、別のアプリとしてインストールされています。アイコンと黒に変わってます。

バージョン確認

正しくバージョンアップされてます。

> $PSVersionTable
Name                           Value
----                           -----
PSVersion                      6.2.1
PSEdition                      Core
GitCommitId                    6.2.1
OS                             Microsoft Windows 10.0.18362
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

さいごに

PowerShell 6 ではだいぶ見た目が変わっていますが、他にも多く変わっている部分があり、私が気になったのは以下です。

・既定のエンコードが BOM なしの UTF-8 に変更
・.NET Framework から .NET Core への移行
・macOS と Linux のサポート
・SSH ベースの PowerShell リモート処理

変更点の詳細は以下にありますので、気になった方は確認してみてください。
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-core-60?view=powershell-6

以上です。

コメント