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 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 werden Sie auf dem Remotecomputer ausgeführt Get-Process
und nach Windows PowerShell-Hostprozessen gefiltert. 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 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, und Enter-PSHostProcess
geben die ID des Hostprozesses an, den Sie im ersten Befehl abgerufen haben, 1152.
Im vierten Befehl führen Sie verfügbare Runspaces für die Prozess-ID 1152 durch Ausführen Get-Runspace
auf.
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.ps1
indem Sie ausführen Debug-Runspace
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.
Dieser Parameter wurde in PowerShell 7.2 hinzugefügt.
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 der Instanz-ID an, eine GUID, die Sie anzeigen können, indem Sie ausführen Get-Runspace
.
Type: | Guid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Gibt einen Runspace anhand seines Namens 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
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-Runspace
stammt ; d. h. sie hat eineDebug-Runspace
GUID-ID. - Wenn er von einem PowerShell-Workflow stammt und seine Workflowauftrags-ID mit der aktuellen aktiven Debugger-Workflowauftrags-ID identisch ist.