概要
PowerShellでスクリプトを作成すると、VerboseとDebug引数でスクリプトの動作が見えるようにすることが簡単にできるので、メモしておきます。
まず、PowerShellの引数に関してはわかりやすくまとまった記事があるので、参考してください。
Verbose 引数
PowerShellの-Verbose
スイッチ引数をつけて実行すると詳細出力ができるようになります。
verbose-test.ps1
[CmdletBinding()]
param()
Write-Verbose '詳細出力'
Write-Output '基本出力'
実行
PS C:\PowerShell> .\verbose-test.ps1
基本出力
PS C:\PowerShell> .\verbose-test.ps1 -Verbose
詳細: 詳細出力
基本出力
Debug 引数
PowerShellの-Debug
スイッチ引数をつけて実行するとデバック出力と確認ができるようになります。
debug-test.ps1
[CmdletBinding()]
param()
Write-Output '基本出力'
Write-Debug 'デバック出力'
実行
PS C:\PowerShell> .\debug-test.ps1
基本出力
PS C:\PowerShell> .\debug-test.ps1 -Debug
デバッグ: デバック出力
確認
この操作を続行しますか?
[Y] はい(Y) [A] すべて続行(A) [H] コマンドの中止(H) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
基本出力
VerboseとDebug 引数の組み合わせ
PowerShellの-Verbose
と-Debug
スイッチ引数をつけて実行すると詳細出力及びデバック出力と確認ができるようになります。
verbose-debug-test.ps1
[CmdletBinding()]
param()
Write-Verbose '詳細出力'
Write-Output '基本出力'
Write-Debug 'デバック出力'
実行
PS C:\PowerShell> .\verbose-debug-test.ps1
基本出力
PS C:\PowerShell> .\verbose-debug-test.ps1 -Verbose
詳細: 詳細出力
基本出力
PS C:\PowerShell> .\verbose-debug-test.ps1 -Debug
デバッグ: デバック出力
確認
この操作を続行しますか?
[Y] はい(Y) [A] すべて続行(A) [H] コマンドの中止(H) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
基本出力
PS C:\PowerShell> .\verbose-debug-test.ps1 -Verbose -Debug
詳細: 詳細出力
デバッグ: デバック出力
確認
この操作を続行しますか?
[Y] はい(Y) [A] すべて続行(A) [H] コマンドの中止(H) [S] 中断(S) [?] ヘルプ (既定値は "Y"): y
基本出力
実装するには
上記のコード例で書いておきましたが、CmdletBinding
一行を追加すれば使えるようになります。
PowerShellのコマンドレット(Cmdlet)は .NET Framework または .NET Core の C#言語で記述し、コンパイルされていますが、CmdletBinding
を使うことによってコマンドレットのように機能させることができます。なので-Verbose
とDebug
以外に-WhatIf
または-Confirm
スイッチ引数も使うことができます。
例
[cmdletbinding()]
Param(
# パラメータ
)
# スクリプト