Condividi tramite


Debug-Runspace

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

Sintassi

RunspaceParameterSet (Impostazione predefinita)

Debug-Runspace
    [-Runspace] <Runspace>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Debug-Runspace
    [-Name] <String>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterSet

Debug-Runspace
    [-Id] <Int32>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Debug-Runspace
    [-InstanceId] <Guid>
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Descrizione

Il cmdlet Debug-Runspace avvia una sessione di debug interattiva con uno spazio di esecuzione attivo locale o remoto. È possibile trovare uno spazio di esecuzione di cui eseguire il debug eseguendo prima Get-Process per trovare i 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 di cui eseguire il debug, se lo spazio di esecuzione esegue un comando o uno script o se lo script è stato arrestato in un punto di interruzione, PowerShell apre una sessione del debugger remota per lo spazio di esecuzione. È possibile eseguire il debug dello script dello spazio di esecuzione nello stesso modo in cui viene eseguito il debug degli script di sessione remota.

È possibile connettersi a un processo host di PowerShell solo se si è un amministratore nel computer che esegue il processo o si esegue lo script di cui si vuole eseguire il debug. Inoltre, non è 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

In questo esempio si esegue il debug di uno spazio di esecuzione aperto in un computer remoto, WS10TestServer. Nella prima riga del comando, esegui Get-Process sul computer remoto e filtra i processi host di Windows PowerShell. In questo esempio si desidera eseguire il debug dell'ID processo 1152, il processo ospite di Windows PowerShell ISE.

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:\> >

Nel secondo comando si esegue Enter-PSSession per aprire una sessione remota in WS10TestServer. Nel terzo comando si collega al processo host di 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 è possibile elencare 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 di cui si vuole eseguire il debug.

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

Parametri

-Confirm

Richiede conferma prima di eseguire il cmdlet.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:True
Supporta i caratteri jolly:False
DontShow:False
Alias:cfr

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Id

Specifica il numero ID di un ambiente di esecuzione. È possibile eseguire Get-Runspace per visualizzare gli ID dello spazio di esecuzione.

Proprietà dei parametri

Tipo:Int32
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

IdParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-InstanceId

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

Proprietà dei parametri

Tipo:Guid
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

InstanceIdParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Name

Specifica uno spazio di esecuzione in base al nome. Puoi eseguire Get-Runspace per visualizzare i nomi dei runspace.

Proprietà dei parametri

Tipo:String
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

NameParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

-Runspace

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

Proprietà dei parametri

Tipo:Runspace
Valore predefinito:None
Supporta i caratteri jolly:False
DontShow:False

Set di parametri

RunspaceParameterSet
Posizione:0
Obbligatorio:True
Valore dalla pipeline:True
Valore dalla pipeline in base al nome della proprietà:True
Valore dagli argomenti rimanenti:False

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

Proprietà dei parametri

Tipo:SwitchParameter
Valore predefinito:True
Supporta i caratteri jolly:False
DontShow:False
Alias:Wi

Set di parametri

(All)
Posizione:Named
Obbligatorio:False
Valore dalla pipeline:False
Valore dalla pipeline in base al nome della proprietà:False
Valore dagli argomenti rimanenti:False

CommonParameters

Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.

Input

Runspace

È possibile inviare tramite pipe i risultati di un comando Get-Runspace a questo cmdlet.

Note

Debug-Runspace funziona su spazi di esecuzione nello stato Aperto. Se uno stato dello spazio di esecuzione passa da Opened 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 ID GUID Invoke-Command.
  • Se proviene da Debug-Runspace, ovvero ha un ID GUID Debug-Runspace.
  • 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.