久々に書きます。
「PowerShell に新しく関数やCmdletを入れたい。」
こうなった時、基本はModuleを導入することになります。しかしv4までは、モジュールパスにファイルを配置する操作が手間で、開発者がWebClientでのダウンロードを提供したり、手動コピー&ペーストすることがおおかったでしょう。
これはJenkinsなどのCIでも、MSDeployに変わるだけでそう変わりません。
しかし、PowerShell v5では、PackageManagemtn (a.k.a OneGet) をAPIバックエンドとしてモジュールをCmdlet1つで導入できる仕組みが持ち込まれます。それが、PowerShellGetです。
今回は、従来のパッケージと比べて何が変わるのか、つらつら見ておきましょう。
PowerShellGet とは
端的にいうと、PowerShellGetは、PowerShell Galleryに配置されたモジュールをCmdlet 1つでダウンロードできる仕組みです。
モジュールの開発者
これがPowerShellモジュールの開発者に与える影響は大きいです。これまではGitHubなどで公開しても次の問題がありました。
- モジュールに気づかれない (一覧性がない)
- モジュールの配置を利用者に理解してもらわないといけない
- モジュールの配置を自動化しないと使われにくい
利用者に導入をためらわせるのは愚の骨頂であり、PowerShellを使う/導入する上で見えないけれども大きく立ちはだかる問題でした。
PowerShellGetは、NuGetをベースとしておりそのアップロードなどもCmdletで行うことができます。NuGetと感覚としては同様にできるのは、良いでしょう。
配布が一元化されて、Cmdlet1つでできるのは開発者にとって非常に大きなメリットがあるといえます。
モジュールの利用者
モジュールの利用者が享受するメリットは素晴らしいものがあります。
これまで、導入しにくい(git clone
して、コピーして。あるいは、独自のダウンロード用意)と感じていたことが、たった一行のコマンドで自動化されるんですから!
Install-Module モジュール名
PowerShell DSC の展開
PowerShell DSCが享受できるメリットは絶大です。
PowerShell DSCのリソースは、実体としてはPowerShell Moduleです。そう、PowerShellGetでDSCリソースが配布、展開可能なのです。
すでにPowerShell Teamのリソースはギャラリーにすべて公開されています。
https://msconfiggallery.cloudapp.net/packages/xPSDesiredStateConfiguration/
手元のPULLサーバーで展開するときも、このコマンドだけです。はいぱーラクチン!
Install-Module -Name xPSDesiredStateConfiguration
PUSH先のサーバーでのリソース展開も、同様にできますよ! もちろんValentiaで事前に済ませるのもありでしょう。
まとめ
まだv5はGAじゃないですが、使いがっては現状から大きく変わらないでしょう。ぜひ触ってください。便利さを味わってください。
実は、この記事を書いたのはPowerShell DSC Advent Calendarを書いていていい加減v5の機能を紹介して楽をしてほしいからでした。
DSC PULLサーバーの展開をずっと更新してなかったのは、もっと楽を感じてほしいからだったという(いいわけ!
というわけで、某カレンダーはちまちま書いています。