Debug-Runspace

実行空間を使用して対話型デバッグ セッションを開始します。

構文

Debug-Runspace
     [-Runspace] <Runspace>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Debug-Runspace
     [-Name] <String>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Debug-Runspace
     [-Id] <Int32>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Debug-Runspace
     [-InstanceId] <Guid>
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

説明

このコマンドレットは Debug-Runspace 、ローカルまたはリモートのアクティブな実行空間を使用して対話型デバッグ セッションを開始します。 デバッグする実行空間を見つけるには、最初Get-Processに実行して PowerShell に関連付けられているプロセスを検索し、次にEnter-PSHostProcessプロセスにアタッチする Id パラメーターに指定されたプロセス ID を指定してからGet-Runspace、PowerShell ホスト プロセス内の実行空間を一覧表示します。

デバッグする実行空間を選択した後、実行空間が現在コマンドまたはスクリプトを実行している場合、またはスクリプトがブレークポイントで停止している場合、PowerShell は実行空間のリモート デバッガー セッションを開きます。 実行空間スクリプトは、リモート セッション スクリプトのデバッグと同じ方法でデバッグできます。

PowerShell ホスト プロセスにアタッチできるのは、プロセスを実行しているコンピューターの管理者であるか、デバッグするスクリプトを実行している場合のみです。 また、現在の PowerShell セッションを実行しているホスト プロセスを入力することはできません。 別の PowerShell セッションを実行しているホスト プロセスのみを入力できます。

例 1: リモート実行空間をデバッグする

この例では、リモート コンピューター WS10TestServer で開いている実行空間をデバッグします。 コマンドの最初の行では、リモート コンピューターで実行 Get-Process し、Windows PowerShell ホスト プロセスをフィルター処理します。 この例では、プロセス ID 1152、Windows PowerShell I Standard Edition ホスト プロセスをデバッグします。

PS C:\> Get-Process -ComputerName "WS10TestServer" -Name "*powershell*"

Handles      WS(K)   VM(M)      CPU(s)    Id  ProcessName
-------      -----   -----      ------    --  -----------
    377      69912     63     2.09      2420  powershell
    399     123396    829     4.48      1152  powershell_ise

PS C:\> Enter-PSSession -ComputerName "WS10TestServer"
[WS10TestServer]:PS C:\> Enter-PSHostProcess -Id 1152
[WS10TestServer:][Process:1152]: PS C:\Users\Test\Documents> Get-Runspace

Id Name            ComputerName    Type          State         Availability
-- ----            ------------    ----          -----         ------------
 1 Runspace1       WS10TestServer  Remote        Opened        Available
 2 RemoteHost      WS10TestServer  Remote        Opened        Busy

[WS10TestServer][Process:1152]: PS C:\Users\Test\Documents> Debug-Runspace -Id 2

Hit Line breakpoint on 'C:\TestWFVar1.ps1:83'
At C:\TestWFVar1.ps1:83 char:1
+ $scriptVar = "Script Variable"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Process:1152]: [RSDBG: 2]: PS C:\> >

2 番目のコマンドでは、WS10TestServer でリモート セッションを開くために実行 Enter-PSSession します。 3 番目のコマンドでは、リモート サーバーで実行されている Windows PowerShell I Standard Edition ホスト プロセスにアタッチしますEnter-PSHostProcess。そのためには、最初のコマンド 1152 で取得したホスト プロセスの ID を指定します。

4 番目のコマンドでは、プロセス ID 1152 で使用可能な実行領域を一 Get-Runspace覧表示します。 ビジー状態の実行空間の ID 番号を書き留めます。デバッグするスクリプトが実行されています。

最後のコマンドでは、スクリプトを実行している開いている実行空間のデバッグを開始し、TestWFVar1.ps1Debug-RunspaceID パラメーターを追加して、その ID 2 で実行空間を識別します。 スクリプトにブレークポイントがあるため、デバッガーが開きます。

パラメーター

-Confirm

コマンドレットの実行前に確認を求めるメッセージが表示されます。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

実行空間の ID 番号を指定します。 実行 Get-Runspace して、実行空間 ID を表示できます。

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InstanceId

インスタンス ID で実行空間を指定します。GUID は、実行 Get-Runspaceして表示できます。

Type:Guid
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

実行空間を名前で指定します。 実行 Get-Runspace して、実行空間の名前を表示できます。

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Runspace

実行空間オブジェクトを指定します。 このパラメーターの値を指定する最も簡単な方法は、フィルター処理された Get-Runspace コマンドの結果を含む変数を指定することです。

Type:Runspace
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

Runspace

コマンドの Get-Runspace 結果をこのコマンドレットにパイプできます。

メモ

Debug-Runspace は、Opened 状態の実行空間で機能します。 実行空間の状態が開いている状態から別の状態に変わると、その実行空間は実行中の一覧から自動的に削除されます。 実行空間は、次の条件を満たしている場合にのみ、実行リストに追加されます。

  • それが Invoke-Command から来ている場合。つまり、GUID ID を持ちます Invoke-Command
  • ソースである場合は Debug-Runspace、GUID ID を持ちます Debug-Runspace
  • PowerShell ワークフローからのものであり、そのワークフロー ジョブ ID が現在アクティブなデバッガー ワークフロー ジョブ ID と同じである場合。