Debug-Runspace
Startet eine interaktive Debugsitzung mit einem Runspace.
Syntax
RunspaceParameterSet (Standardwert)
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 cmdlet Debug-Runspace startet eine interaktive Debug-Sitzung mit einem lokalen oder remoten aktiven Runspace. Sie finden einen Runspace, den Sie debuggen möchten, indem Sie zuerst Get-Process ausführen, um Prozesse zu finden, die mit PowerShell verknüpft sind, dann Enter-PSHostProcess mit der Prozess-ID, die im -ID--Parameter angegeben ist, an den Prozess anhängen und dann Get-Runspace ausführen, um Runspaces innerhalb des PowerShell-Hostprozesses aufzulisten.
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-Runspace
In diesem Beispiel debuggen Sie einen Runspace, der auf dem Remotecomputer WS10TestServer geöffnet ist. In der ersten Zeile des Befehls führen Sie Get-Process auf dem Remotecomputer aus und filtern nach Windows PowerShell-Hostprozessen. In diesem Beispiel möchten Sie die Prozess-ID 1152, den Windows PowerShell ISE-Hostprozess, debuggen.
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 Enter-PSSession aus, um eine Remotesitzung auf WS10TestServer zu öffnen. Im dritten Befehl verbinden Sie sich mit dem Windows PowerShell ISE-Hostprozess, der auf dem Remoteserver ausgeführt wird, indem Sie Enter-PSHostProcessausführen und die ID des Hostprozesses angeben, die Sie im ersten Befehl, 1152, abgerufen haben.
Im vierten Befehl listen Sie verfügbare Runspaces für die Prozess-ID 1152 auf, indem Sie Get-Runspaceausführen.
Sie notieren die ID-Nummer des ausgelasteten Runspaces; es wird ein Skript ausgeführt, das Sie debuggen möchten.
Im letzten Befehl beginnen Sie mit dem Debuggen eines geöffneten Runspaces, das ein Skript ausführt, TestWFVar1.ps1, indem Sie Debug-Runspaceausführen und den Runspace anhand der ID 2 identifizieren, indem Sie den parameter ID hinzufügen. Da im Skript ein Breakpoint gesetzt ist, öffnet sich der Debugger.
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: | vgl |
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 Runspace an Sie können Get-Runspace ausführen, 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 Get-Runspace ausführen.
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 Get-Runspace ausführen, 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 bei Runspaces, die sich im Zustand "Geöffnet" befinden. Wenn sich ein Runspace-Zustand von "Geöffnet" in einen anderen Zustand ändert, wird dieser Runspace automatisch aus der laufenden Liste entfernt. Ein Runspace wird der laufenden Liste nur dann hinzugefügt, wenn er die folgenden Kriterien erfüllt.
- Wenn dies von Invoke-Command stammt; das heißt, es verfügt über eine
Invoke-Command-GUID-ID. - Wenn es von
Debug-Runspacekommt ; das heißt, es verfügt über eineDebug-Runspace-GUID-ID. - Wenn es von einem PowerShell-Workflow stammt und seine Workflowauftrags-ID mit der Workflowauftrags-ID des aktuell aktiven Debuggers identisch ist.