概要
「PowerShell の -Verbose と -Debug 引数」記事の追加内容として WhatIf と Confirm 引数を加えてさらに便利な PowerShell スクリプトを作成してみます。
CmdletBinding
を定義することでPowerShellコマンドレットのように機能させることができと前回記事に書きました。
そこから追加オプションを加えることで WhatIf と Confirm 引数も使えるようになります。
実装
cmdletbinding に SupportsShouldProcess 引数を定義しておきます。
ConfirmImpact は Confirm パラメータに対して確認レベルを制御するのに使います。デフォルト値は「Medium」です。
[cmdletbinding(SupportsShouldProcess=$True, ConfirmImpact='Medium')]
Param()
If ($Pscmdlet.ShouldProcess("A", "B")) {
Write-Host "コマンド実行"
}
WhatIf パラメータ確認
変更する前に結果を確認するパラメータです。
PS > .\powershell.ps1
コマンド実行
PS > .\powershell.ps1 -WhatIf
WhatIf: 対象 "A" に対して操作 "B" を実行しています。
Confirm パラメータ確認
コマンドレット実行前に確認を求めるパラメータです。
PS > .\powershell.ps1 -Confirm
確認
この操作を実行しますか?
対象 "A" に対して操作 "B" を実行しています。
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y
コマンド実行
PS > .\powershell.ps1 -Confirm
確認
この操作を実行しますか?
対象 "A" に対して操作 "B" を実行しています。
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): N