Debug-Runspace

Uruchamia interaktywną sesję debugowania z obszarem uruchomieniowym.

Składnia

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>]

Opis

Polecenie Debug-Runspace cmdlet uruchamia interaktywną sesję debugowania z lokalną lub zdalną aktywną przestrzenią uruchamiania. Przestrzeń uruchamiania, którą chcesz debugować, najpierw uruchamiając Get-Process polecenie w celu znalezienia procesów skojarzonych z programem PowerShell, a następnie Enter-PSHostProcess przy użyciu identyfikatora procesu określonego w parametrze Id , aby dołączyć do procesu, a następnie Get-Runspace wyświetlić listę obszarów uruchomieniowych w procesie hosta programu PowerShell.

Po wybraniu obszaru uruchamiania do debugowania, jeśli przestrzeń uruchamiania jest obecnie uruchomiona polecenie lub skrypt lub jeśli skrypt został zatrzymany w punkcie przerwania, program PowerShell otwiera zdalną sesję debugera dla obszaru uruchamiania. Skrypt runspace można debugować w taki sam sposób, jak skrypty sesji zdalnej są debugowane.

Możesz dołączyć tylko do procesu hosta programu PowerShell, jeśli jesteś administratorem na komputerze, na którym jest uruchomiony proces, lub uruchamiasz skrypt, który chcesz debugować. Ponadto nie można wprowadzić procesu hosta, który uruchamia bieżącą sesję programu PowerShell. Możesz wprowadzić tylko proces hosta, który uruchamia inną sesję programu PowerShell.

Przykłady

Przykład 1. Debugowanie zdalnej przestrzeni uruchamiania

W tym przykładzie debugujesz przestrzeń uruchamiania otwartą na komputerze zdalnym WS10TestServer. W pierwszym wierszu polecenia uruchomisz Get-Process polecenie na komputerze zdalnym i filtrujesz procesy hosta programu Windows PowerShell. W tym przykładzie chcesz debugować proces o identyfikatorze 1152— procesie hosta środowiska 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:\> >

W drugim poleceniu uruchomisz polecenie Enter-PSSession , aby otworzyć sesję zdalną na serwerze WS10TestServer. W trzecim poleceniu dołączasz do procesu hosta środowiska Windows PowerShell ISE uruchomionego na serwerze zdalnym, uruchamiając polecenie Enter-PSHostProcessi określając identyfikator procesu hosta uzyskanego w pierwszym poleceniu 1152.

W czwartym poleceniu zostanie wyświetlona lista dostępnych obszarów runspace dla identyfikatora procesu 1152, uruchamiając polecenie Get-Runspace. Zanotujesz identyfikator zajętego obszaru uruchamiania; uruchamia skrypt, który chcesz debugować.

W ostatnim poleceniu rozpoczniesz debugowanie otwartego obszaru runspace, na którym jest uruchomiony skrypt , TestWFVar1.ps1, uruchamiając Debug-Runspacepolecenie , i identyfikując przestrzeń uruchomieniową według jego identyfikatora 2, dodając parametr Id . Ponieważ skrypt zawiera punkt przerwania, zostanie otwarty debuger.

Parametry

-BreakAll

Umożliwia natychmiastowe przerwanie w bieżącej lokalizacji, gdy debuger dołącza.

Ten parametr został dodany w programie PowerShell 7.2.

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

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

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

-Id

Określa numer identyfikatora przestrzeni uruchomieniowej. Możesz uruchomić polecenie Get-Runspace , aby wyświetlić identyfikatory przestrzeni uruchomieniowej.

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

-InstanceId

Określa przestrzeń uruchomieniową według identyfikatora wystąpienia, identyfikator GUID, który można wyświetlić, uruchamiając polecenie Get-Runspace.

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

-Name

Określa przestrzeń uruchomieniową według jego nazwy. Możesz uruchomić polecenie Get-Runspace , aby wyświetlić nazwy obszarów uruchamiania.

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

-Runspace

Określa obiekt runspace. Najprostszym sposobem podania wartości dla tego parametru jest określenie zmiennej zawierającej wyniki filtrowanego Get-Runspace polecenia.

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

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

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

Dane wejściowe

Runspace

Możesz przekazać wyniki Get-Runspace polecenia do tego polecenia cmdlet.

Uwagi

Debug-Runspace działa w przestrzeniach runspace, które znajdują się w stanie Otwarte. Jeśli stan obszaru uruchomieniowego zmieni się z Otwartego na inny stan, to przestrzeń uruchamiania zostanie automatycznie usunięta z uruchomionej listy. Przestrzeń uruchamiania jest dodawana do uruchomionej listy tylko wtedy, gdy spełnia następujące kryteria.

  • Jeśli pochodzi z polecenia Invoke-Command; oznacza to, że ma Invoke-Command identyfikator GUID.
  • Jeśli pochodzi z Debug-Runspaceelementu ; oznacza to, że ma Debug-Runspace identyfikator GUID.
  • Jeśli pochodzi z przepływu pracy programu PowerShell, a jego identyfikator zadania przepływu pracy jest taki sam jak bieżący identyfikator zadania aktywnego debugera przepływu pracy.