見出し画像

PowerShellスクリプトをデバッグする

PowerShellスクリプトを作成ときに大切なデバッグの方法について解説します。


はじめに


 PowerShellスクリプトを作成する際、デバッグは非常に重要なプロセスです。特に複雑なスクリプトでは、エラーや不具合の原因を特定し、修正するために効果的なデバッグが必要です。ここでは統合開発環境PowerShell ISEを使用したデバッグの方法とブレイクポイントについて解説します。

0. 環境


Windows10 or 11
PowerShell 5.1系統

PS C:\temp> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.22621.4111
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.22621.4111
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

1. PowerShell ISEとは?


PowerShell ISE (Integrated Scripting Environment) は、PowerShellスクリプトを作成、実行、デバッグするための統合開発環境です。ISEは以下の機能を提供しており、スクリプト作成を効率化します。

- カラーコードエディタ: コードを見やすくするため、構文に応じた色分けがされます。
- デバッグ機能: ブレイクポイントの設定やステップ実行が可能です。
- 統合コンソール: コマンドラインとスクリプトエディタが統合され、スクリプトの実行結果がすぐに確認できます。

2. デバッグの基本


デバッグは、スクリプト内でエラーや意図しない動作を特定し、それを修正するための作業です。PowerShell ISEでは、以下のデバッグ手法が重要です。

- 変数の中身を確認する: スクリプトの途中で変数が正しく設定されているかを確認することができます。
- ステップ実行: コードを1行ずつ実行して、実行の流れを確認します。
- ブレイクポイント: スクリプトの特定の行で実行を一時停止し、実行時の状況を確認します。

3. ブレイクポイントの設定


ブレイクポイントは、スクリプトのデバッグ時に非常に役立つツールです。指定した行でスクリプトの実行を一時停止させ、スクリプトの状態(変数の値、実行フローなど)を調べることができます。

  • ブレイクポイントの設定方法

PowerShell ISEでブレイクポイントを設定する方法は以下の通りです。

 ブレイクポイントを設定したい行を選択し、F9キーを押します(または行番号の部分で右クリックし「ブレイクポイントの挿入」を選択します)
設定すると、該当の背景色が変わります。

↑ ブレイクポイント設定


  • スクリプト実行の一時停止

ブレイクポイントが設定されている状態でスクリプトを実行するとブレイクポイント位置で停止します。

上のスクショではHit 'C:\temp\debug.ps1:3' の行のブレークポイントと表示されて実行が停止しています。


  • デバッグ時の変数確認

スクリプトがブレイクポイントで停止したときに、ISEの統合コンソールを使用して、変数の値を確認できます。これにより、変数の現在の値を表示させ、意図したとおりの動作をしているか確認できます。

たとえば、変数 $inputnumの内容を確認するには以下のコマンドをコンソールで実行します。

$inputnum


変数の中身が表示されている


  • ブレイクポイントで停止後の操作

- F10キーで次の行へ進む(ステップオーバー)。
- F11キーで関数内のコードも実行する(ステップイン)。
- Shift + F11キーで関数から出る(ステップアウト)。
- F5キーでスクリプトを再開して次のブレイクポイントまで進む。


  • ブレイクポイントの表示

コマンドですべてのブレイクポイントを表示できます。

get-psbreakpoint

コンソールで実行してみると

C:\temp> get-psbreakpoint

 ID Script Line Command Variable Action 
 -- ------ ---- ------- -------- ------ 
 1 無題1.ps1 3 


  • ブレイクポイントの削除

エディタ上でブレイクポイント行を右クリックして「ブレイクポイントの削除」を選択します。または、再度F9キーを押すことで削除できます。

コマンドで削除する場合は、以下のように実行します。

Remove-PSBreakpoint -Id 1


まとめ


PowerShell ISEでのデバッグは、特にブレイクポイントを活用することで、スクリプトの問題を迅速に特定し、修正するのに役立ちます。以下のポイントがデバッグの際に重要です。

- ブレイクポイントを適切な場所に設定し、スクリプトを停止して調査。
- 変数の値を確認し、スクリプトの実行フローが正しいかを把握。
- ステップ実行を活用して、スクリプトの進行を細かく追う。
これらを活用することで、より効率的なデバッグ作業が可能になります。

#PowerShell #プログラミング初心者 #プログラミング学習 #デバッグ
#開発効率化 #Windows


補足

コマンドでブレイクポイントを設定することも可能です。
コマンドレットSet-PSBreakpointを使います。

Set-PSBreakpoint -Script "C:\temp\debug.ps1" -Line 3

スクリプトの3行目にブレイクポイントが設定されます。




いいなと思ったら応援しよう!