Partager via


Debug-Runspace

Démarre une session de débogage interactive avec un runspace.

Syntaxe

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 de commande Debug-Runspace démarre une session de débogage interactive avec un runspace actif local ou distant. Vous pouvez trouver un espace d’exécution que vous souhaitez déboguer en exécutant d’abord Get-Process pour rechercher les processus associés à PowerShell, puis Enter-PSHostProcess avec l’ID de processus spécifié dans le paramètre ID de à attacher au processus, puis Get-Runspace pour répertorier les espaces d’exécution au sein du processus hôte PowerShell.

Une fois que vous avez sélectionné un runspace pour 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 distant pour l’espace d’exécution. Vous pouvez déboguer le script d’exécution de la même façon que les scripts de session distante sont débogués.

Vous pouvez uniquement joindre un processus hôte PowerShell 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 ne pouvez entrer qu’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 espace d’exécution 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 les processus hôtes Windows PowerShell. Dans cet exemple, vous souhaitez déboguer l’ID de processus 1152, le processus hôte 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:\> >

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 Windows PowerShell ISE s’exécutant sur le serveur distant en exécutant Enter-PSHostProcesset 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. 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 Debug-Runspaceet en identifiant l’espace d’exécution par son ID, 2, en ajoutant le paramètre Id. Comme 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 s’attache.

Ce paramètre a été ajouté dans PowerShell 7.2.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Confirm

Vous invite à confirmer avant d’exécuter l’applet de commande.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:True
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Id

Spécifie le numéro d’ID d’un espace d’exécution. Vous pouvez exécuter Get-Runspace pour afficher les ID d’espace d’exécution.

Type:Int32
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InstanceId

Spécifie un runspace par son ID d’instance, un GUID que vous pouvez afficher en exécutant Get-Runspace.

Type:Guid
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Name

Spécifie un espace d’exécution par son nom. Vous pouvez exécuter Get-Runspace pour afficher les noms des espaces d’exécution.

Type:String
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Runspace

Spécifie un objet runspace. La façon la plus simple de fournir une valeur pour ce paramètre consiste à spécifier une variable qui contient les résultats d’une commande de Get-Runspace filtrée.

Type:Runspace
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-WhatIf

Affiche ce qui se passerait si l’applet de commande s’exécute. L’applet de commande n’est pas exécutée.

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:True
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

Runspace

Vous pouvez diriger les résultats d’une commande Get-Runspace vers cette applet de commande.

Notes

Debug-Runspace fonctionne sur les espaces d’exécution qui sont dans l’état Ouvert. Si un état d’exécution 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 de Invoke-Command ; autrement dit, il a un ID GUID Invoke-Command.
  • S’il provient de Debug-Runspace; autrement dit, il a un ID GUID Debug-Runspace.
  • S’il provient d’un flux de travail PowerShell, et son ID de travail de workflow est identique à l’ID actuel du travail du débogueur actif.