しばたテックブログ

PowerShellを中心に気分で書いている技術ブログです。

PowerShell Galleryがリニューアルしました

f:id:stknohg:20180916151011p:plain

つい先日、PowerShell Core 6.1のリリースと足並みを揃える形でPowerShell Galleryのサイトがリニューアルしました。

公式のアナウンスはコチラです。

blogs.msdn.microsoft.com

リニューアル自体は以前からアナウンスされ、プレビュー版のサイトが公開されてフィードバックを募っていたのが晴れて正式リリースとなった形です。

また、PowerShell Galleryのリニューアルと同時にPowerShellGetのモジュールがVer.2.0.0とメジャーバージョンアップしています。

PowerShell Gallery更新内容

公式のアナウンスからいくつかかいつまんで説明します。

1. Modern UIの採用

サイトのデザインが今っぽく変更され、以前は無かったモバイル向けのデザインも追加されています。

また、各モジュールの情報に対して主要な情報のみ初期表示し、その他の要素については折りたたまれた状態にするといった最適化を図ったそうです。

2. パフォーマンス改善

CDNの利用*1によりモジュールのダウンロード速度が改善されたそうです。
特にアメリカ国外でのダウンロードが大きく改善されているであろうとの事です。

3. マニュアルダウンロード

PowerShell Galleryはもともと内部的にNugetを利用しており、モジュールも内部的にはnupkgの形で保持されています。

今回のリニューアルでこのnupkgファイルを直接ダウンロードできる様になりました。

f:id:stknohg:20180916151101p:plain

インターネットに直接接続できない環境に対してこのnupkgを使い手動でモジュールのインストールをする事ができます。

細かい手順については

を参照してください。

4. Aligning with NuGet

こちらは利用者に直接関係のない話ですが、PowerShell GalleryとPowerShellGet内部で利用しているNugetのバージョンが更新されその改善点も反映されたとのことです。
後述のNuget API Key管理の更新はこの変更があってのことだそうです。

モジュール利用者向けの更新点

最新のPowerShellGet 2.0.0ではモジュール利用者の利便性を高めるために以下の変更が加えられています。

PowerShellGetの更新方法については本ブログの

blog.shibata.tech

を参考にしてください。

インストール時のデフォルトスコープの変更

これまでは、Install-ModuleInstall-ScriptInstall-Packageでモジュールやスクリプトをインストールする際のデフォルトスコープはAllUsersであり要管理者権限でした。

PowerShellGet 2.0.0からはデフォルトスコープが以下の様に変更されます。

  • PowerShell 3.0 - 5.1 : コンソールが管理者として実行されている(昇格している)場合はAllUsers、そうでない場合はCurrentUser
  • PowerShell 6.0 - : 常にCurrentUser

この変更に至る経緯については

github.com

を見ると参考になります。

モジュール開発者向けの更新点

今回のリニューアルでモジュール開発者にとっては大きな変更が発生しています。

公式ブログに

Most important: Publishers must update to PowerShellGet module version 1.6.8 or higher to publish to the PowerShell Gallery. Older versions of PowerShellGet are fine for find, save, install, and update functions, but not for publishing.

とある様にPowerShellGetのバージョンが1.6.8以降(現時点では2.0.0しかない)でないとモジュールの公開やバージョンアップ*2が出来なくなりました。

また、セキュリティ強化のために以下の変更が加えられています。

1. API Keyの有効期限

モジュールを公開するために使用するNuget API Keyに有効期限が設けられ、1日、90日、180日、270日、365日のいずれかを指定する必要があります。

既存のAPI Keyは有効期限無期限の"Full access API key"として残されていますが、一度削除すると二度と再作成することはできません。

2. API Keyの画面表示

新しいPowerShell Galleryでは作成したAPI Keyの値は画面表示されることは無く、作成時にクリップボードに保存して値を確認・保存することしかできなくなりました。
API Keyの値を忘れた場合は再作成するしかありません。

3. 複数Keyの作成

これまでは単一のAPI Keyしか持てませんでしたが、新しいPowerShell Galleryでは複数のAPI Keyを持つことができそれぞれに識別名と個別の権限を付与することができる様になりました。

f:id:stknohg:20180916151219p:plain

細かい設定については

をご覧ください。

4. 二要素認証のサポート

PowerShell Galleryで使用するアカウントで二要素認証がサポートされました。
PowerShell Gallery独自の二要素認証ではなく、使用するMicrosoft Accountの二要素認証の仕組みを流用している様で、Microsoft Accountで二要素認証を有効にしている場合はそのままPowerShell Galleryでも有効になっていました。

詳細はコチラをご覧ください。

5. ログインアカウントの変更機能

これまではPowerShell Gallery初回登録時のMicrosoft Accountがログインアカウントとなり変更できませんでしたが、今は変更できる様になりました。

詳細はコチラをご覧ください。

*1:以前はCDNを使っていなかったのか?といった点については明言されていませんが、使ってないことは無いでしょうし、利用方法を改善したものと思われます。

*2:バージョンアップは可能でした。元の文章を思いっきり誤読してました...