Delen via


Debug-Runspace

Start een interactieve foutopsporingssessie met een 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

De Debug-Runspace cmdlet start een interactieve foutopsporingssessie met een lokale of externe actieve runspace. U kunt een runspace vinden die u wilt opsporen door eerst Get-Process te zoeken naar processen die zijn gekoppeld aan PowerShell, en vervolgens Enter-PSHostProcess met de proces-id die is opgegeven in de id-parameter die aan het proces moet worden gekoppeld en vervolgens Get-Runspace runspaces in het PowerShell-hostproces weer te geven.

Nadat u een runspace hebt geselecteerd om fouten op te sporen, als de runspace momenteel een opdracht of script uitvoert, of als het script is gestopt bij een onderbrekingspunt, opent PowerShell een externe foutopsporingssessie voor de runspace. U kunt fouten opsporen in het runspace-script op dezelfde manier als externe sessiescripts foutopsporing.

U kunt alleen koppelen aan een PowerShell-hostproces als u een beheerder bent op de computer waarop het proces wordt uitgevoerd, of als u het script uitvoert dat u wilt opsporen. U kunt ook het hostproces dat de huidige PowerShell-sessie uitvoert, niet invoeren. U kunt alleen een hostproces invoeren waarop een andere PowerShell-sessie wordt uitgevoerd.

Voorbeelden

Voorbeeld 1: Fouten opsporen in een externe runspace

In dit voorbeeld gaat u fouten opsporen in een runspace die is geopend op een externe computer, WS10TestServer. Op de eerste regel van de opdracht voert Get-Process u uit op de externe computer en filtert u op Windows PowerShell-hostprocessen. In dit voorbeeld wilt u fouten opsporen in proces-id 1152, het Windows PowerShell ISE-hostproces.

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

In de tweede opdracht voert u uit Enter-PSSession om een externe sessie te openen op WS10TestServer. In de derde opdracht koppelt u het Windows PowerShell ISE-hostproces dat wordt uitgevoerd op de externe server door uit te voeren Enter-PSHostProcessen de id op te geven van het hostproces dat u hebt verkregen in de eerste opdracht, 1152.

In de vierde opdracht geeft u beschikbare runspaces voor proces-id 1152 weer door uit te voeren Get-Runspace. U noteert het id-nummer van de Bezet-runspace; er wordt een script uitgevoerd dat u wilt opsporen.

In de laatste opdracht begint u met het opsporen van fouten in een geopende runspace waarop een script wordt uitgevoerd, TestWFVar1.ps1door de runspace uit te voeren Debug-Runspaceen de runspace te identificeren op basis van de id, 2, door de parameter Id toe te voegen. Omdat het script een onderbrekingspunt bevat, wordt het foutopsporingsprogramma geopend.

Parameters

-BreakAll

Hiermee kunt u direct op de huidige locatie breken wanneer het foutopsporingsprogramma wordt gekoppeld.

Deze parameter is toegevoegd in PowerShell 7.2.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Hiermee wordt u gevraagd om bevestiging voordat u de cmdlet uitvoert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

Hiermee geeft u het id-nummer van een runspace. U kunt uitvoeren Get-Runspace om runspace-id's weer te geven.

Type:Int32
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InstanceId

Hiermee geeft u een runspace op basis van de exemplaar-id, een GUID die u kunt weergeven door uit te voeren Get-Runspace.

Type:Guid
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Name

Hiermee geeft u een runspace op basis van de naam. U kunt uitvoeren Get-Runspace om de namen van runspaces weer te geven.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Runspace

Hiermee geeft u een runspace-object. De eenvoudigste manier om een waarde voor deze parameter op te geven, is door een variabele op te geven die de resultaten van een gefilterde Get-Runspace opdracht bevat.

Type:Runspace
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Hiermee wordt weergegeven wat er zou gebeuren als u de cmdlet uitvoert. De cmdlet wordt niet uitgevoerd.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:True
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

Runspace

U kunt de resultaten van een Get-Runspace opdracht doorsluisen naar deze cmdlet.

Notities

Debug-Runspace werkt op runspaces die de status Geopend hebben. Als de status van een runspace wordt gewijzigd van Geopend in een andere status, wordt die runspace automatisch verwijderd uit de actieve lijst. Een runspace wordt alleen toegevoegd aan de actieve lijst als deze voldoet aan de volgende criteria.

  • Als deze afkomstig is van Invoke-Command; Dat wil gezegd, het heeft een Invoke-Command GUID-id.
  • Als deze afkomstig is van Debug-Runspace; dat wil gezegd, heeft het een Debug-Runspace GUID-id.
  • Als deze afkomstig is van een PowerShell-werkstroom en de werkstroomtaak-id hetzelfde is als de huidige actieve werkstroomtaak-id voor foutopsporingsprogramma's.