#はじめに
投稿が久しぶりになってしまったのでリハビリに、Automation Runbookの便利な基本機能を紹介しながら、自分が変な所で躓いた恥を備忘録がてら記事に起こしておきます。(2020/03/30時点の記事です。)
参考文献:MS:Runbook の入力パラメーター
#Runbookを入力形式にする
Runbookでスクリプトを作成した後、起動時に日付やファイルパスなど起動パラメータを設定したい時には以下のようにスクリプト先頭でパラメータの宣言を入れます。複数パラメータを作る時は,(カンマ)を忘れないように!
※現段階ではこれ以上のオプションは付けられないようです。
Param
(
# 必須入力の場合は$ture/省略可能な場合は$false
[Parameter(Mandatory = $true)]
[datetime] $date1,
# 次に繋ぐ時はカンマ
[Parameter(Mandatory = $false)]
[datetime] $date2 = "2020/04/01 12:13:14"
)
datetime型の時は実行時、下のようにカレンダーで選択できるようになるので便利でした。また、省略可能かどうか、既定値はいくつかなども画面上に表示されます。さらに、必須入力にしておくと入力しない場合、入力チェックで引っかかるので入力チェックをスクリプト内に書かなくても良くてグッドです。
#注意点
以下が私が躓いた所です。 上記画面上での必須、省略可能は基本的にはMandatoryのフラグ値によって決められるのですがそれ以外にも決められる場合があり、それが「既定値」が設定されている場合です。例えば上の構文を下のように変更すると、入力必須としているのに「省略可能」と表示されます。
Param
(
[Parameter(Mandatory = $true)]
[datetime] $date1,
#初期値を設定したまま入力必須にしてみる
[Parameter(Mandatory = $true)]
[datetime] $date2 = "2020/04/01 12:13:14"
)
入力しなくても既定値が入るなら必須入力だとしても省略可能じゃん!と言われればその通りなのですが、私は最初以下のように入力していたせいで、必須入力とならず、入力なしのままスクリプトが動きエラーで実行失敗となりました。
Param
(
[Parameter(Mandatory = $true)]
# 値を初期化したかった。。。
[datetime] $date1="",
[Parameter(Mandatory = $true)]
[datetime] $date2 = "2020/04/01 12:13:14"
)
ちなみに$nullを投入しても結果は変わらずなので、入力値を指定する場合は「何も入力しない」が正解です。
#おわり
マニュアル通りにやれば動いた筈なのに考え足らずなせいで踏まなくて良い所を踏んでしまった。。。