PowerShell Advent Calendar 2017、18日目です。
PowerShell 5.0以降、Windows 10やWindows Server 2016では標準でインストール済みのPowerShellGetの機能について、現時点での最新バージョンはVer.1.6.0なのですが、例えばWindows 10においてはFall Creator Update(1709)を適用してもVer.1.0.0.1と古いバージョンのまま更新されません。
PowerShellGetの変更履歴はこちらあり、これまでいくつかのバグフィックスや機能追加がなされています。
例えば最新版のVer.1.6.0ではプレリリースバージョンのモジュールのインストールに対応する様になっています。
一般論としてできるだけ新しいバージョンのモジュールを利用していくのが良いため、本エントリではその手順を紹介していきます。
PowerShellGetをアップデートする
本エントリではWindows 10 Fall Creators Update(1709)を検証環境として説明します。
はじめに更新前のバージョンをチェックしてみます。
PowerShellGetは内部でPackageManagementモジュールを使用するのでこちらのバージョンも確認しておきます。
Get-Module PowerShellGet,PackageManagement -ListAvailable
どちらのモジュールもVer.1.0.0.1と古いままです。
通常、モジュールのアップデートにはUpdate-Module
コマンドレットを使いますが、何も考えずに実行すると以下のエラーメッセージが出てしまいます。
Update-Module PowerShellGet
このためInstall-Module
コマンドレットを使い新しいバージョンを別にインストールする体をとる必要があります。
Install-Module
コマンドレットですが、インストールするモジュールを過去バージョンと併用するには-Force
オプションが必要です。
また既存コマンドの動作を上書き許可するため-AllowClobber
オプションも必要になります。
Install-Module PowerShellGet -Scope CurrentUser -Force -AllowClobber
インストール後はこんな感じになります。
- PowerShellGet : Ver.1.6.0
- PackageManagement : Ver.1.1.7
と、両モジュールとも新しいバージョンが追加インストールされていることが分かります。
コンソールを再起動すると新しいバージョンのモジュールが読み込まれ利用可能になります。
PowerShellGetの新機能を試してみる
最初に新しいバージョンのPowerShellGetでは
プレリリースバージョンのモジュールのインストールに対応する
と説明しました。
ちょうど今PowerShellコンソールに様々な拡張機能を提供しているPSReadlineモジュールがVer.2.0 ベータをプレリリース版として公開しているので試しにインストールしてみます。
PSReadline 2.0は1.x系に対して主にPowerShell Coreへの対応とバグフィックスが主な変更点ですが、
などの日本語ユーザーにとっても嬉しい修正が入っているので積極的に試してみると良いと思います。
PSReadline 2.0 Betaをインストールしてみる
プレリリース版のモジュールを取り扱うには新たに追加された-AllowPrerelease
オプションを指定してやります。
モジュールを検索する場合にはFind-Module
に-AllowPrerelease
オプションを指定します。
Find-Module PSReadline -AllowPrerelease
-AllowPrerelease
を付けたときだけプレリリース版であるVer.2.0.0-beta1がヒットするのが見て取れます。
続けて、プレリリース版のモジュールをインストールするにはInstall-Module
に-AllowPrerelease
オプションを指定してやります。
過去バージョンのモジュールと併用するには-Force
オプションが必要です。
また、既存のバージョン(ここではVer.1.2)が署名済みのため、Ver.2.0でも署名を求められており、いまのところは-SkipPublisherCheck
を付けてやる必要があります。
Install-Module PSReadline -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
エラー無く処理が終わればインストール完了です。
コンソールを再起動すると新しいバージョンのモジュールが読み込まれます。
補足 システム全体へのインストール
ここまでの手順では各コマンドを-Scope CurrentUser
で実行してユーザー毎のインストールを行いましたが、もちろん管理者としてシステムワイドにインストールしても構いません。
この場合は-AllowClobber
オプションは不要になります。
Install-Module PowerShellGet -Force
コンソールを再起動すると新しいバージョンのモジュールが読み込まれます。
同様にPSReadlineも管理者としてインストール可能です。
Install-Module PSReadline -AllowPrerelease -Force -SkipPublisherCheck