Debug-Runspace
Avvia una sessione di debug interattiva con uno spazio di esecuzione.
Sintassi
Debug-Runspace
[-Runspace] <Runspace>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Name] <String>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Id] <Int32>
[-BreakAll]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-InstanceId] <Guid>
[-BreakAll]
[-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
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.
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 Windows PowerShell ISE in esecuzione nel server remoto eseguendo Enter-PSHostProcess
e 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 un runspace aperto che esegue uno script, , eseguendo Debug-Runspace
e identificando lo spazio di esecuzione in base all'ID, TestWFVar1.ps1
2, aggiungendo il parametro ID. Poiché nello script è presente un punto di interruzione, viene aperto il debugger.
Parametri
-BreakAll
Consente di interrompere immediatamente la posizione corrente quando il debugger si collega.
Questo parametro è stato aggiunto in PowerShell 7.2.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-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
È possibile inviare i risultati di un Get-Runspace
comando a questo cmdlet.
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 unDebug-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.