Condividi tramite


Debug-Runspace

Avvia una sessione di debug interattiva con uno spazio di esecuzione.

Sintassi

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>]

Descrizione

Il Debug-Runspace cmdlet avvia una sessione di debug interattiva con un runspace attivo locale o remoto. È possibile trovare uno spazio di esecuzione che si vuole eseguire prima eseguendo Get-Process per trovare processi associati a PowerShell, quindi Enter-PSHostProcess con l'ID processo specificato nel parametro ID da collegare al processo e quindi Get-Runspace per elencare gli spazi di esecuzione all'interno del processo host di PowerShell.

Dopo aver selezionato uno spazio di esecuzione per il debug, se lo spazio di esecuzione è attualmente in esecuzione un comando o uno script o se lo script è stato arrestato in un punto di interruzione, PowerShell apre una sessione del debugger remoto per lo spazio di esecuzione. È possibile eseguire il debug dello script runspace nello stesso modo in cui vengono debug degli script di sessione remoti.

È possibile collegare un processo host di PowerShell solo se si è un amministratore nel computer che esegue il processo oppure si esegue lo script da eseguire. Non è inoltre possibile immettere il processo host che esegue la sessione di PowerShell corrente. È possibile immettere solo un processo host che esegue una sessione di PowerShell diversa.

Esempio

Esempio 1: Eseguire il debug di uno spazio di esecuzione remoto

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

PS C:\> [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:\> >

In questo esempio viene eseguito il debug di uno spazio di esecuzione aperto in un computer remoto, WS10TestServer. Nella prima riga del comando eseguire Get-Process nel computer remoto e filtrare i processi host Windows PowerShell. In questo esempio si vuole eseguire il debug dell'ID processo 1152, il processo host ISE Windows PowerShell.

Nel secondo comando si esegue Enter-PSSession per aprire una sessione remota in WS10TestServer. Nel terzo comando si collega al processo host Windows PowerShell ISE in esecuzione nel server remoto eseguendo Enter-PSHostProcesse specificando l'ID del processo host ottenuto nel primo comando 1152.

Nel quarto comando si elencano gli spazi di esecuzione disponibili per l'ID processo 1152 eseguendo Get-Runspace. Si noti il numero ID dello spazio di esecuzione occupato; esegue uno script che si vuole eseguire il debug.

Nell'ultimo comando si avvia il debug di uno spazio di esecuzione aperto che esegue uno script, TestWFVar1.ps1, eseguendo Debug-Runspacee identificando lo spazio di esecuzione in base all'ID, 2, aggiungendo il parametro ID . Poiché nello script è presente un punto di interruzione, viene aperto il debugger.

Parametri

-Confirm

Richiede la conferma dell'utente prima di eseguire il cmdlet.

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

-Id

Specifica il numero ID di uno spazio di esecuzione. È possibile eseguire Get-Runspace per visualizzare gli ID di runspace.

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

-InstanceId

Specifica uno spazio di esecuzione in base all'ID dell'istanza, un GUID che è possibile visualizzare eseguendo Get-Runspace.

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

-Name

Specifica uno spazio di esecuzione in base al nome. È possibile eseguire Get-Runspace per visualizzare i nomi degli spazi di esecuzione.

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

-Runspace

Specifica un oggetto runspace. Il modo più semplice per specificare un valore per questo parametro consiste nel specificare una variabile contenente i risultati di un comando filtrato Get-Runspace .

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

-WhatIf

Mostra l'esito in caso di esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

Runspace

È possibile inviare i risultati di un Get-Runspace comando a Debug-Runspace.

Note

Debug-Runspace funziona su runspace che si trovano nello stato Aperto. Se uno stato di runspace cambia da Apri a un altro stato, tale spazio di esecuzione viene rimosso automaticamente dall'elenco in esecuzione. Un runspace viene aggiunto all'elenco in esecuzione solo se soddisfa i criteri seguenti.

  • Se proviene da Invoke-Command; ovvero, ha un Invoke-Command ID GUID.
  • Se proviene da Debug-Runspace, ovvero, ha un Debug-Runspace ID GUID.
  • Se proviene da un flusso di lavoro di PowerShell e il relativo ID processo del flusso di lavoro corrisponde all'ID processo del debugger attivo corrente.