最近何かと PowerShell を便利に使っているわけです。
某製品のメンテナンスとか、PowerShell でしかできない事もあったりするわけですよ。
で、それらの PowerShell 拡張用モジュールて従来は 製品付属のインストーラーだったり、
メーカーのサイトからダウンロードするのが多かったんですが、最近は
Intall-Module -Name ModuleName
でインストールできたりするんですよね。
あんまり深く考えず、マニュアルだったり手順書にあったらそのようにして必要な追加の PowerShell モジュールを
インストールしてたのですが、ある時ちょっと気になってもうちょっとちゃんと見てみました。
すると、これは Install-Module は PowerShell Gallery (PSGallery) から物を持ってきてインストールしてるんだと。
なるほど。
PowerShell Gallery てなんやの? て調べると NuGet て仕組みに準拠する個別リポジトリの一つで
Microsoft さん?がハンドリングしているものとか。
ほほう。
で、調べると アカウント登録したりなんかして諸条件を整えるとオラにもアップロードして公開できそうらしい。
ということで、公開しても当たり障りなさそうな SHIMSOFT-Holidays モジュールをアップロードしてみました。
最初 ver.1.1 であげたら、運営の方から「これは酷い、やり直せ」と怒られまして、何やら紹介されたスクリプト分析ツールで
警告メッセージが出なくなるまで Fix と、手元で普通に使っていた時と、 Install-Module で入れたときの配置パス相違での
誤作動やら、ついでにちょっと追加しようと思っていた機能を追加したりして、とりあえず ver 1.2 をアップロード。
運営の方からも「問題はなくなった。OK」との回答を得たのでとりあえず公式に公開。
手元で動けば OK というのと分析ツールで警告出ないようにしろ、では随分と手間臭さが増加してあれだけども。
面白かったんでOK。
都合により PowerShell 最小バージョン 3.0 にした。
※ 多分動くじゃろ。 推定 PowerShell 5.0 出ないと動かないかもしれないコマンドは内部で使ってないはずじゃけれども。
動かんかったらすまんこって。 PowerShell 5.0 以上に実行環境をバージョンアップしてくだされ。
SHIMSOFT-Holidays て何できるん?
もとはと言えば、諸事情により 1 年間通しの日曜日の日付一覧の CSV が欲しい事案があったんですよ。
Excel があればそんなの最初~3週間分程度の日曜日の日付入れて、マウスでぐいーんって伸ばしてフィルしてしまえば
すぐできるは無しなんですが、そうそう Excel なんて入ってないんだよ、そんな必要性に迫られるときの環境ってさ。
昔なら、そんな時は VBScript で、 *.vbs を書くかとか思うわけですが、そこはソレ、今風なのでそこは PowerShell なわけですよ。
で、また変な危険察知能力が働くわけですよ。
これ・・・今はとりあえず 毎週日曜日の日付欲しいだけなんだけど。なんかの間違いで毎週水曜日とか欲しくなったりするんじゃないの?
ふっふっふ・・・限らない・・・限らないっ!!! 毎週とはっ!! 隔週っ! 隔週ってこともある!!
とか考えて Get-NextWeekDay 関数が出来上がったわけです。
ざっくり
Get-NextWeekDay -From 2018/1/1 -To 2018/12/31 -NextWeekDay Sunday
てやると 2018年の日曜日一覧が出てくるよ、という。
ここで、隔週(2週間おき)とかにしたい場合 -IntervalWeeks 2 を追加指定する。
これで一安心・・・ えっ?・・・ ざわ・・・・ざわざわ・・・
日曜日一覧に出して考えないといけないとなったら、今は必要ないとしても、
祝日は? 祝日はどうする?・・・ あっ!・・・・ 振り替え休日っ!!
とか考えて Get-Holidays 関数が出来上がったわけです。
ぅ。メーデー! メーデー!! 祝日じゃないけど、この日休みか休みじゃないかって微妙じゃなくないか!?
後年末年始とかお盆とか状況によって違うんじゃねぇの?ふつう。
カレンダー通りじゃぁないもんな。そもそも大晦日大体休みなくせして祝日じゃないぞ、これ。
とか考えて New-CustomHoliday 関数が出来上がったわけです。
ver 1.1 アップロード時に怒られた問題を解決しつつ、 Add-CustomHoliday と Remove-CustomeHoliday を追加したりした。
今のところこのモジュールお試しいただいた方からは
「何の役に立つのかわからない。Google カレンダーとかで祝日追加の設定したら一撃じゃね?」
「ですよね~」
と高評価を頂いております。
・・・わかるまい、ワシの気持ちなど・・・くすん
それでも SHIMSOFT-Holidays 試してみたいと思ってみてしまった方用。
Windows 8.1 以上で試してくださるよ良いかと。
PowerShell 起動して $PSVersionTable で PSVersion を確認し、3.0 以上であることをご確認ください。
インストールするには管理者権限が必要です。
※ 利用するときには一般ユーザー権限で問題ありません。
インストール方法
・ 管理者モードで PowerShell を起動し、以下のコマンドを実行します。
Install-Module -Name SHIMSOFT-Holidays
① Install-Module を初めて使う場合、 NuGet.exe 必要と言われるのでインストールするように Y を選択してください。
② PSGallery リポジトリは規定で信頼されない (Untrusted) になっているため、信頼されないリポジトリからのインストールを
行うか聞いて来るので Y を選択してください。
↑
PSGallery は信頼できても、SHIMSOFT は信頼できないわいや、てことになる場合には、インストールせずに
指定したフォルダーに保存するだけができます。
Save-Module -Name SHIMSOFT-Holidays -Path C:\temp\module\
必要に応じて中身など覗いてみてもいいんじゃないでしょうか。
おかしなことはしてないのでw 役に立つこともしてないと思うけども。。。
利用方法
Import-Module -Name SHIMSOFT-Holidays
※ Save-Module で保存していた場合は、保存したパスにある psd1 ファイルを指定してください。
Import-Module C:\temp\module\SHIMSOFT-Holidays\1,2\SHIMSOFT-Holidays.psd1
Get-Module
一覧に SHIMSOFT-Holidays 出てきていれば読み込み成功。
Get-Holidays とかお試しください。
コマンド一覧を見るには
Get-Command -Module SHIMSOFT-Holidays
コマンドの説明を見るには
Get-Help Get-Holidays -full
利用終わり
Remove-Module -Name SHIMSOFT-Holidays
アンインストール
管理者モードで PowerShell を開きます。
Uninstall-Module -Name SHIMSOFT-Holidays
備考
仕組み上、休日定義テンプレート HolidaysTemplate 的な .xml ファイルをインストールフォルダに保存されます。