デバッグの応用
基本的なデバッグ方法が分かったところで1つ応用例を見てみましょう。Set-PSBreakpointコマンドレットにはActionというパラメーターがあります。
Actionパラメーターを使用すると、「変数の値が~になったときに停止する」のような条件を付けたブレークポイントを作成することができます。
リスト1は九九を表示するスクリプトです。
for ( $i = 1; $i -le 9; $i++ )
{
for ( $j = 1; $j -le 9; $j++ )
{
$ans = $j * $i
$exp = ";{0}*{1}={2,2:#0},"; -f $j, $i ,$ans
Write-Host $exp -NoNewline
}
Write-Host ""
}
それではActionパラメーターの使い方を見て見ましょう。
リスト1では2重ループの内側で変数$iと変数$jをかけ算して結果を$ansに格納しています。この$ansが20と等しくなったときに止まるようにブレークポイントを設定するには
Set-PSBreakpoint -Script Func1.ps1 -Variable ans -Action { if ($ans -eq 20) {break } }
のようにします。
ブレークポイント設定後スクリプトを実行すると、$ansが20になったときに実行が停止します。
まとめ
PowerShell 2.0に新たに追加されたデバッグ関連のコマンドレットを使用することで、より柔軟なデバッグを行えることできるようになりました。どのコマンドレットも使用方法に難しいところはありません。ぜひ活用して、スクリプトのデバッグに活かしていただければ幸いです。

