tech.guitarrapc.cóm

Technical updates

PowerShell v5 におけるPowerShellGet による Powershell Module の導入はどう変わるのか

久々に書きます。

「PowerShell に新しく関数やCmdletを入れたい。」

こうなった時、基本は Module を導入することになります。しかし v4までは、モジュールパスにファイルを配置する操作が手間で、開発者が WebClientでのダウンロードを提供したり、手動コピペすることがおおかったでしょう。

これは Jenkins などの CI でも、MSDeploy に変わるだけでそう変わりません。

しかし、PowerShell v5 では、PackageManagemtn (a.k.a OneGet) をAPIバックエンドとしてモジュールをCmdlet1つで導入できる仕組みが持ち込まれます。それが、PowerShellGet です。

tech.guitarrapc.com

tech.guitarrapc.com

今回は、従来のパッケージと比べて何が変わるのか、つらつら見ておきましょう。

目次

PowerShellGet とは

端的にいうと、PowerShellGet は、PowerShell Gallery に配置されたモジュールを Cmdlet 1つでダウンロードできる仕組みです。

https://msconfiggallery.cloudapp.net/

モジュールの開発者

これが 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/msconfiggallery.cloudapp.net

手元のPULLサーバーで展開するときも、このコマンドだけです。はいぱーラクチン!

Install-Module -Name xPSDesiredStateConfiguration

PUSH 先のサーバーでのリソース展開も、同様にできますよ!もちろん Valentiaで事前に済ませるのもありでしょう。

まとめ

まだv5は GAじゃないですが、使いがっては現状から大きく変わらないでしょう。ぜひ触ってください。便利さを味わってください。

実は、この記事を書いたのは PowerShell DSC Advent Calendar を書いていていい加減 v5 の機能を紹介して楽をしてほしいからでした。

DSC PULL サーバーの展開をずっと更新してなかったのは、もっと楽を感じてほしいからだったという(いいわけ!

というわけで、某カレンダーはちまちま書いています。