1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

Powershellスクリプトで条件付きブレークポイントを使用する例

2022-02-05 20:47:08

PowerShell 3.0以降に対応!

PowerShell ISE はラインブレークポイントのみをサポートしています。スクリプトを特定のデバッグ行まで実行することができます。F9 キーを押してブレークポイントを追加または削除できます。ただし、スクリプトが保存されていることを確認する必要があります (デフォルトの名称未設定ファイルではおそらく動作しません)。

さらに高度なアプローチとして、特定の行に限定せず、特定のシナリオに限定する動的ブレークポイント(条件付きブレークポイント)があります。たとえば、次の例のスクリプトは、PowerShell が指定された変数に値を代入するたびに停止するようにブレークポイントを打ちます。

コピーコード コードは以下の通りです。

$bp = Set-PSBreakpoint -Variable a -Mode Write -Script $psise.CurrentFile.FullPath
$a = 1
$a
$a
$a = 200
$a
Remove-PSBreakpoint -Breakpoint $bp

例えば、$aに100以上の整数が代入されたらブレークポイントを押すなど、より高度で複雑な条件も縛ることができます。

コピーコード コードは以下の通りです。

$Condition = { if ($a -is [Int] -and $a -gt 100) { break }
$bp = Set-PSBreakpoint -Variable a -Mode Write -Script $psise.CurrentFile.FullPath -Action $Condition
$a = 1
$a
$a
$a = 200
$a
Remove-PSBreakpoint -Breakpoint $bp

例えば、少し大きめのスクリプトファイルの中で、変数Aに何度も値を代入しているが、1回だけ間違った値を代入していないかどうかわからない、その行を探したいという場合。条件付きブレークポイントがなければ、変数Aの代入文をすべてキーワード検索してブレークポイントをヒットさせなければならないかもしれず、それは大変な作業ですが、条件付きブレークポイントがあれば、アミターバ!