Debug-Runspace

Startet eine interaktive Debugsitzung mit einem Runspace.

Syntax

RunspaceParameterSet (Standard)

Debug-Runspace
    [-Runspace] <Runspace>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Debug-Runspace
    [-Name] <String>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

IdParameterSet

Debug-Runspace
    [-Id] <Int32>
    [-BreakAll]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

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 finden einen Runspace, den Sie debuggen möchten, indem Sie zuerst ausgeführt Get-Process werden, um Prozesse zu finden, die mit PowerShell verknüpft sind, und dann Enter-PSHostProcess mit der im Id-Parameter angegebenen Prozess-ID, die an den Prozess angefügt werden soll, und dann Get-Runspace runspaces innerhalb des PowerShell-Hostprozesses auflisten.

Nachdem Sie einen zu debuggenden Runspace ausgewählt haben, wenn der Runspace zurzeit 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 gedebuggt werden.

Sie können nur an einen PowerShell-Hostprozess anfügen, wenn Sie ein Administrator auf dem Computer sind, auf dem der Prozess ausgeführt wird, oder sie führen das Skript aus, das Sie debuggen möchten. Außerdem können Sie den Hostprozess nicht 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 Remote-Runspaces

In diesem Beispiel debuggen Sie einen Runspace, der auf einem Remotecomputer geöffnet ist, WS10TestServer. In der ersten Zeile des Befehls führen Sie Get-Process auf dem Remotecomputer aus, und filtern Sie nach Windows PowerShell-Hostprozessen. In diesem Beispiel möchten Sie die Prozess-ID 1152 debuggen, den 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 wird ausgeführt 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 Enter-PSHostProcess ausführen und die ID des Hostprozesses angeben, den Sie im ersten Befehl 1152 abgerufen haben.

Im vierten Befehl führen Sie verfügbare Runspaces für die Prozess-ID 1152 durch Ausführen Get-Runspaceauf. Sie notieren die ID-Nummer des Beschäftigt-Runspaces; es wird ein Skript ausgeführt, das Sie debuggen möchten.

Im letzten Befehl starten Sie das Debuggen eines geöffneten Runspaces, das ein Skript ausführt, TestWFVar1.ps1indem Sie ausführen Debug-Runspaceund 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.

Dieser Parameter wurde in PowerShell 7.2 hinzugefügt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Confirm

Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:True
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Cf

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Id

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

Parametereigenschaften

Typ:Int32
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

IdParameterSet
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-InstanceId

Gibt einen Runspace anhand der Instanz-ID an, eine GUID, die Sie anzeigen können, indem Sie ausführen Get-Runspace.

Parametereigenschaften

Typ:Guid
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

InstanceIdParameterSet
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Name

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

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

NameParameterSet
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten: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.

Parametereigenschaften

Typ:Runspace
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

RunspaceParameterSet
Position:0
Obligatorisch.:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-WhatIf

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

Parametereigenschaften

Typ:SwitchParameter
Standardwert:True
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Wi

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

Runspace

Sie können die Ergebnisse eines Get-Runspace Befehls an dieses Cmdlet weiterleiten.

Hinweise

Debug-Runspace funktioniert auf Runspaces, die sich im Geöffneten Zustand befinden. Wenn sich ein Runspace-Zustand von "Geöffnet" in einen anderen Zustand ändert, wird dieser Runspace automatisch aus der laufenden Liste entfernt. Der laufenden Liste wird nur ein Runspace hinzugefügt, wenn er die folgenden Kriterien erfüllt.

  • Wenn er von Invoke-Command stammt; d. h. sie hat eine Invoke-Command GUID-ID.
  • Wenn sie von Debug-Runspacestammt ; d. h. sie hat eine Debug-Runspace GUID-ID.
  • Wenn er von einem PowerShell-Workflow stammt und seine Workflowauftrags-ID mit der aktuellen aktiven Debugger-Workflowauftrags-ID identisch ist.