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-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 uno spazio di esecuzione aperto che esegue uno script, TestWFVar1.ps1, eseguendo Debug-Runspace
e 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
È 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 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.