2012年3月9日金曜日

◆必ず確認メッセージを表示するコマンド(関数)を作る。(confirm)

自作の関数にて、「confirm」と「whtif」をサポートするためには以下の属性をつければ良さそうだ。

CmdletBinding(SupportsShouldProcess=$true)

 

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017

function CommandWithConfirm {
 
[CmdletBinding(SupportsShouldProcess=$true)]
  param
()

 
$mailAddr = "test1@hoge.co.jp","test2@hoge.co.jp"
 
 
foreach($addr in $mailAddr
)
  {
   
if ($PSCmdlet.ShouldProcess($addr, "メールを送信"
)) {
     
"$($addr)にメールを送信しました。"
    } else
 {
     
"$($addr)へのメール送信をバイパスしました。"
    }
  }
}


CommandWithConfirm -confirm

ここで、confirmを付け忘れるといきなり大量のメールを送信してしまうおそれがある。これを防ぐには必ず確認メッセージを表示するようにしておけば良い。

予めCmdletBindingにそういった機能が用意されていて、以下のようにすれば良い。

[CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="high")]

要はこの処理は非常に危険だよということで、”high”を指定するという事なのだろう。

0 件のコメント:

コメントを投稿