3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure PowershellのRunbookでパラメータを入力形式にする

Posted at

#はじめに
投稿が久しぶりになってしまったのでリハビリに、Automation Runbookの便利な基本機能を紹介しながら、自分が変な所で躓いた恥を備忘録がてら記事に起こしておきます。(2020/03/30時点の記事です。)
参考文献:MS:Runbook の入力パラメーター

#Runbookを入力形式にする
Runbookでスクリプトを作成した後、起動時に日付やファイルパスなど起動パラメータを設定したい時には以下のようにスクリプト先頭でパラメータの宣言を入れます。複数パラメータを作る時は,(カンマ)を忘れないように!
※現段階ではこれ以上のオプションは付けられないようです。

imputparameter.ps1
Param
(
   # 必須入力の場合は$ture/省略可能な場合は$false
   [Parameter(Mandatory = $true)]
    [datetime] $date1,
  # 次に繋ぐ時はカンマ
    [Parameter(Mandatory = $false)]
    [datetime] $date2 = "2020/04/01 12:13:14"
)

datetime型の時は実行時、下のようにカレンダーで選択できるようになるので便利でした。また、省略可能かどうか、既定値はいくつかなども画面上に表示されます。さらに、必須入力にしておくと入力しない場合、入力チェックで引っかかるので入力チェックをスクリプト内に書かなくても良くてグッドです。

auto02.png

auto01.png

#注意点
以下が私が躓いた所です。 上記画面上での必須、省略可能は基本的にはMandatoryのフラグ値によって決められるのですがそれ以外にも決められる場合があり、それが「既定値」が設定されている場合です。例えば上の構文を下のように変更すると、入力必須としているのに「省略可能」と表示されます。

imputparameterF.ps1
Param
(
   [Parameter(Mandatory = $true)]
    [datetime] $date1,
  #初期値を設定したまま入力必須にしてみる
    [Parameter(Mandatory = $true)]
    [datetime] $date2 = "2020/04/01 12:13:14"
)

入力しなくても既定値が入るなら必須入力だとしても省略可能じゃん!と言われればその通りなのですが、私は最初以下のように入力していたせいで、必須入力とならず、入力なしのままスクリプトが動きエラーで実行失敗となりました。

imputparameterF2.ps1
Param
(
   [Parameter(Mandatory = $true)]
    # 値を初期化したかった。。。
    [datetime] $date1="",
    [Parameter(Mandatory = $true)]
    [datetime] $date2 = "2020/04/01 12:13:14"
)

ちなみに$nullを投入しても結果は変わらずなので、入力値を指定する場合は「何も入力しない」が正解です。

#おわり
マニュアル通りにやれば動いた筈なのに考え足らずなせいで踏まなくて良い所を踏んでしまった。。。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?