Share via


Debug-Runspace

Startet eine interaktive Debugsitzung mit einem 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>]

Beschreibung

Das Debug-Runspace Cmdlet startet eine interaktive Debugsitzung mit einem lokalen oder remote aktiven Runspace. Sie können einen Runspace finden, den Sie debuggen möchten, indem Sie zuerst ausführen Get-Process , um prozesse zu finden, die mit PowerShell verknüpft sind, dann Enter-PSHostProcess mit der Prozess-ID, die im Id-Parameter angegeben ist, um den Prozess anzufügen, und dann Get-Runspace Runspaces innerhalb des PowerShell-Hostprozesses aufzulisten.

Nachdem Sie einen zu debuggenden Runspace ausgewählt haben, wenn der Runspace derzeit einen Befehl oder ein Skript ausführt oder das Skript an einem Haltepunkt beendet wurde, öffnet PowerShell eine Remotedebuggersitzung für den Runspace. Sie können das Runspace-Skript auf die gleiche Weise debuggen, wie Remotesitzungsskripts debuggen.

Sie können nur an einen PowerShell-Hostprozess anfügen, wenn Sie Administrator auf dem Computer sind, auf dem der Prozess ausgeführt wird, oder wenn Sie das Skript ausführen, das Sie debuggen möchten. Außerdem können Sie nicht den Hostprozess eingeben, der die aktuelle PowerShell-Sitzung ausführt. Sie können nur einen Hostprozess eingeben, der eine andere PowerShell-Sitzung ausführt.

Beispiele

Beispiel 1: Debuggen eines Remoteausführungsbereichs

In diesem Beispiel debuggen Sie einen Runspace, der auf einem Remotecomputer geöffnet ist, WS10TestServer. In der ersten Zeile des Befehls führen Sie auf dem Remotecomputer aus Get-Process und filtern nach Windows PowerShell Hostprozessen. In diesem Beispiel möchten Sie die Prozess-ID 1152 debuggen, die Windows PowerShell ISE-Hostprozess.

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

Im zweiten Befehl führen Sie aus Enter-PSSession , um eine Remotesitzung auf WS10TestServer zu öffnen. Im dritten Befehl fügen Sie den Windows PowerShell ISE-Hostprozess an, der auf dem Remoteserver ausgeführt wird, indem Sie ausführen Enter-PSHostProcessund die ID des Hostprozesses angeben, den Sie im ersten Befehl 1152 abgerufen haben.

Im vierten Befehl listen Sie verfügbare Runspaces für die Prozess-ID 1152 auf, indem Sie ausführen Get-Runspace. Sie notieren sich die ID-Nummer des Busy-Runspaces. Es wird ein Skript ausgeführt, das Sie debuggen möchten.

Im letzten Befehl beginnen Sie mit dem Debuggen eines geöffneten Runspaces, der ein Skript ausführt, TestWFVar1.ps1indem Debug-RunspaceSie ausführen und den Runspace anhand der ID 2 identifizieren, indem Sie den Id-Parameter hinzufügen. Da im Skript ein Haltepunkt vorhanden ist, wird der Debugger geöffnet.

Parameter

-BreakAll

Ermöglicht es Ihnen, sofort an der aktuellen Position zu unterbrechen, wenn der Debugger angefügt wird.

Der Parameter ist nur als experimentelles Feature verfügbar. Weitere Informationen finden Sie unter Verwenden experimenteller Features.

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

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

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

-Id

Gibt die ID-Nummer eines Runspaces an. Sie können ausführen Get-Runspace , um Runspace-IDs anzuzeigen.

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

-InstanceId

Gibt einen Runspace anhand seiner instance-ID an, eine GUID, die Sie anzeigen können, indem Sie ausführenGet-Runspace.

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

-Name

Gibt einen Runspace nach seinem Namen an. Sie können ausführen Get-Runspace , um die Namen von Runspaces anzuzeigen.

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

-Runspace

Gibt ein Runspace-Objekt an. Die einfachste Möglichkeit, einen Wert für diesen Parameter bereitzustellen, besteht darin, eine Variable anzugeben, die die Ergebnisse eines gefilterten Get-Runspace Befehls enthält.

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

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

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

Eingaben

Runspace

Sie können die Ergebnisse eines Get-Runspace Befehls an Debug-Runspace übergeben.

Hinweise

Debug-Runspace funktioniert für Runspaces, die den Status Geöffnet haben. Wenn sich ein Runspace-Status von Geöffnet in einen anderen Status ändert, wird dieser Runspace automatisch aus der Ausführungsliste entfernt. Ein Runspace wird der Ausführungsliste nur hinzugefügt, wenn er die folgenden Kriterien erfüllt.

  • Wenn es von Invoke-Command stammt; Das heißt, es verfügt über eine Invoke-Command GUID-ID.
  • Wenn es von Debug-Runspacestammt, hat es eine Debug-Runspace GUID-ID.
  • Wenn es aus einem PowerShell-Workflow stammt und seine Workflowauftrags-ID mit der id des aktuellen aktiven Debuggerworkflows identisch ist.