Debug-Runspace
Démarre une session de débogage interactive avec un runspace.
Syntax
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>]
Description
L’applet Debug-Runspace
de commande démarre une session de débogage interactive avec un runspace actif local ou distant. Vous pouvez trouver un runspace que vous souhaitez déboguer en exécutant Get-Process
d’abord pour rechercher les processus associés à PowerShell, puis Enter-PSHostProcess
avec l’ID de processus spécifié dans le paramètre ID à attacher au processus, puis Get-Runspace
pour répertorier les runspaces au sein du processus hôte PowerShell.
Une fois que vous avez sélectionné un runspace à déboguer, si l’espace d’exécution exécute actuellement une commande ou un script, ou si le script s’est arrêté à un point d’arrêt, PowerShell ouvre une session de débogueur à distance pour l’espace d’exécution. Vous pouvez déboguer le script runspace de la même façon que les scripts de session distante sont débogués.
Vous ne pouvez attacher à un processus hôte PowerShell que si vous êtes administrateur sur l’ordinateur qui exécute le processus ou si vous exécutez le script que vous souhaitez déboguer. En outre, vous ne pouvez pas entrer le processus hôte qui exécute la session PowerShell actuelle. Vous pouvez uniquement entrer un processus hôte qui exécute une autre session PowerShell.
Exemples
Exemple 1 : Déboguer un espace d’exécution distant
Dans cet exemple, vous déboguez un runspace ouvert sur un ordinateur distant, WS10TestServer. Dans la première ligne de la commande, vous exécutez Get-Process
sur l’ordinateur distant et filtrez Windows PowerShell processus hôtes. Dans cet exemple, vous souhaitez déboguer l’ID de processus 1152, le Windows PowerShell processus hôte 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:\> >
Dans la deuxième commande, vous exécutez Enter-PSSession
pour ouvrir une session distante sur WS10TestServer. Dans la troisième commande, vous attachez au processus hôte ISE Windows PowerShell en cours d’exécution sur le serveur distant en exécutant Enter-PSHostProcess
et en spécifiant l’ID du processus hôte que vous avez obtenu dans la première commande, 1152.
Dans la quatrième commande, vous répertoriez les runspaces disponibles pour l’ID de processus 1152 en exécutant Get-Runspace
.
Vous notez le numéro d’ID de l’espace d’exécution Occupé ; il exécute un script que vous souhaitez déboguer.
Dans la dernière commande, vous démarrez le débogage d’un runspace ouvert qui exécute un script, TestWFVar1.ps1
, en exécutant , et vous Debug-Runspace
identifiez l’runspace par son ID, 2, en ajoutant le paramètre ID . Étant donné qu’il existe un point d’arrêt dans le script, le débogueur s’ouvre.
Paramètres
-BreakAll
Vous permet de vous interrompre immédiatement à l’emplacement actuel lorsque le débogueur est attaché.
Ce paramètre a été ajouté dans PowerShell 7.2.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Spécifie le numéro d’ID d’un runspace. Vous pouvez exécuter Get-Runspace
pour afficher les ID d’espace d’exécution.
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InstanceId
Spécifie un runspace par son ID de instance, un GUID que vous pouvez afficher en exécutant Get-Runspace
.
Type: | Guid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Spécifie un runspace par son nom. Vous pouvez exécuter Get-Runspace
pour afficher les noms des runspaces.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Runspace
Spécifie un objet Runspace. Le moyen le plus simple de fournir une valeur pour ce paramètre consiste à spécifier une variable qui contient les résultats d’une commande filtrée Get-Runspace
.
Type: | Runspace |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | True |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger les résultats d’une Get-Runspace
commande vers cette applet de commande.
Notes
Debug-Runspace
fonctionne sur les runspaces qui sont à l’état Ouvert. Si l’état d’un runspace passe de Ouvert à un autre état, cet espace d’exécution est automatiquement supprimé de la liste en cours d’exécution. Un runspace est ajouté à la liste en cours d’exécution uniquement s’il répond aux critères suivants.
- S’il provient d’Invoke-Command ; autrement dit, il a un
Invoke-Command
ID GUID. - S’il provient de
Debug-Runspace
, c’est-à-dire qu’il a unDebug-Runspace
ID GUID. - S’il provient d’un flux de travail PowerShell et que son ID de travail de flux de travail est identique à l’ID de travail de flux de travail de débogueur actif actuel.