-whatif on powershell
-whatif
powershell のコモンパラメータの一つ、-whatif は、いわゆるドライランのオプション。Remove-itemやCopy-Itemなどで実行せずに、実行確認をする。
さて、実装するには?
-whatif実装
肝は、
if( $PSCmdlet.ShouldProcess( $target ) ){ -whatif時に実行しないコマンド }
こうすると、-whatif時に、
$targetに対し、xxx
の様なメッセージが表示される。-confirmでNoが選択された場合も同様。
else節に、実行しない時の処理を書けば詳細を表示できる?それとも別の動き?
-whatifを伝播させる
伝達させるには各関数に下記を記載する。
[CmdletBinding(SupportsShouldProcess=$True)]
伝播経路全てに上記を書くのはどうなの?スクリプトの場合は、スクリプトレベルにも必要?
参考
msdn/ShouldProcess
https://msdn.microsoft.com/en-us/library/ms568267(v=vs.85).aspx
http://stackoverflow.com/questions/11211518/how-to-use-dry-run-in-powershell
https://stuncloud.wordpress.com/2015/12/15/powershell_shouldprocess/