← Back to Home

PowerShell デバッグチュートリアル:スクリプトの問題を診断する

Views: 957

You can try the commands on our interactive shell.

PowerShell デバッグチュートリアル:スクリプトの問題を診断する

PowerShellファンとして、かかわることがあると思いますが、スクリプトが予期していないように動作する場合があります。このチュートリアルでは、PowerShellのデバッグツールについて探索します。これには、Integrated Scripting Environment(ISE)とVisual Studio Code(VS Code)を含みます。

デバッグの重要性

デバッグの重要性について理解しておく必要があります。デバッグは、スクリプトのエラーと例外を特定し、スクリプトの動作を問題解決します。また、パフォーマンスを最適化し、コードの質を向上させることができます。

ISE:クラシックデバッガー

Integrated Scripting Environment(ISE)は、PowerShellの組み込みデバッガーです。ISEは、スクリプトの問題を特定するための強力なツールセットを提供します。ISEにアクセスするには:

  1. スタートメニューで「PowerShell ISE」を検索して実行します(又は、Windowsキー + R、ise を入力してEnterを押す)。
  2. ISE アプリケーションを起動します。

ISE の機能として、以下が含まれます:

例:ISE を使用してシンプルなスクリプトをデバッグ

シンプルな PowerShell スクリプトに意図的なエラーを追加します:

# ExampleScript.ps1
function Get-User {
  $user = "John Doe"
  Write-Host "Hello, $($user)"
}

Get-User

ISE アプリケーションを開き、ExampleScript.ps1 ファイルをロードします:

  1. File > Open をクリックしてスクリプトを選択します。
  2. F5 を押すことでスクリプトを実行します。

ISE はスクリプトを実行し、エラーや例外をハイライトします。この場合、 $user 変数が定義されていないことを示すエラーメッセージが出力されます:

Get-User : The variable 'user' cannot be found in the current scope.
At line:1 char:1
+ $user = "John Doe"
+ ~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : VariableNotBound: (user:String) [Get-User], UndefinedVariableException
    + FullyQualifiedErrorId : VariableNotFound,Microsoft.PowerShell.Commands.GetUserCommand

エラーをデバッグするには:

  1. エラーが原因になる行に Breakpoint を設定します(左マージンをクリックかF9)。
  2. F5 を押すことでスクリプトを実行します。
  3. Watch Window$user 式を追加し、現在値を調べます(undefined)。
  4. Call Stack ウィンドウを使用して、実行の流れを追跡し、問題を特定します。

VS Code:モダンデバッガー

Visual Studio Code は、PowerShell スクリプトに対する強力なデバッグ体験を提供します。デバッグを開始するには:

  1. スタートメニューで「Visual Studio Code」を検索して実行します(又は、Windowsキー + R、code を入力してEnterを押す)。
  2. VS Code アプリケーションを起動します。
  3. PowerShell Extension をインストールするには、Extensions マーケットプレイスで「PowerShell」を検索してインストールします。

VS Code の機能として、以下が含まれます:

例:VS Code を使用してシンプルなスクリプトをデバッグ

もう一度、意図的なエラーが含まれるシンプルな PowerShell スクリプトを作成します:

# ExampleScriptVSCode.ps1
function Get-User {
  $user = "John Doe"
  Write-Host "Hello, $($user)!"
}

Get-User

ExampleScriptVSCode.ps1 ファイルを開き、VS Code を起動します:

  1. File > Open Folder をクリックしてスクリプトを選択します。
  2. F5 を押すことでスクリプトを実行します。

VS Code はスクリプトを実行し、エラーや例外をハイライトします。この場合、 $user 変数が定義されていないことを示すエラーメッセージが出力されます:

Error: The variable 'user' cannot be found in the current scope.
    + CategoryInfo          : VariableNotBound: (user:String) [Get-User], UndefinedVariableException
    + FullyQualifiedErrorId : VariableNotFound,Microsoft.PowerShell.Commands.GetUserCommand

エラーをデバッグするには:

  1. エラーが原因になる行に Breakpoint を設定します(左マージンをクリックかF9)。
  2. F5 を押すことでスクリプトを実行します。
  3. Variables View$user 式を追加し、現在値を調べます(undefined)。
  4. Call Stack ウィンドウを使用して、実行の流れを追跡し、問題を特定します。

結論

このチュートリアルでは、PowerShell のデバッグツールについて探索しました。これには、Integrated Scripting Environment(ISE)とVisual Studio Code(VS Code)の 2 つのデバッガーが含まれます。デバッグは、スクリプトの問題を特定し、パフォーマンスを最適化し、コードの質を向上させるための強力なツールです。

ISE は、クラシックデバッガーで強力な機能セットを提供します。一方、VS Code はモダンデバッガーとして、シンタックスアウェアのエディターと自動完了などの強力な機能を提供します。

Try it Now!