2
1

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 5 years have passed since last update.

PowerShell の -WhatIf と -Confirm 引数

Last updated at Posted at 2020-04-09

概要

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

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?