Udostępnij za pośrednictwem


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 cmdlet Debug-Runspace uruchamia interaktywną sesję debugowania z lokalną lub zdalną aktywną przestrzenią uruchamiania. Możesz znaleźć przestrzeń uruchomieniową, którą chcesz debugować, uruchamiając najpierw Get-Process w celu znalezienia procesów skojarzonych z programem PowerShell, a następnie Enter-PSHostProcess z identyfikatorem procesu określonym w parametrze id w celu dołączenia do procesu, a następnie Get-Runspace w celu wyświetlenia listy przestrzeni 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 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 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 Enter-PSHostProcessi określając identyfikator procesu hosta uzyskanego w pierwszym poleceniu 1152.

W czwartym poleceniu zostanie wyświetlona lista dostępnych przestrzeni uruchamiania dla identyfikatora procesu 1152, uruchamiając 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-Runspacei identyfikując przestrzeń uruchomieniową według jego identyfikatora 2, dodając parametr identyfikatora. 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.

Typ:SwitchParameter
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Domyślna wartość:True
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Id

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

Typ:Int32
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InstanceId

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

Typ:Guid
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Name

Określa przestrzeń uruchomieniową według jego nazwy. Możesz uruchomić Get-Runspace, aby wyświetlić nazwy przestrzeni uruchomieniowych.

Typ:String
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Runspace

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

Typ:Runspace
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-WhatIf

Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie jest uruchamiane.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Domyślna wartość:True
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

Runspace

Wyniki polecenia Get-Runspace można przekazać do tego polecenia cmdlet.

Uwagi

Debug-Runspace działa w przestrzeniach uruchomieniowych, 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 identyfikator GUID Invoke-Command.
  • Jeśli pochodzi z Debug-Runspace; oznacza to, że ma identyfikator GUID Debug-Runspace.
  • 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.