Debug-Runspace
Startet eine interaktive Debugsitzung mit einem Runspace.
Syntax
Debug-Runspace
[-Runspace] <Runspace>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Name] <String>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-Id] <Int32>
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Debug-Runspace
[-InstanceId] <Guid>
[-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 auflisten.
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 Runspaceskript 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 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 Remoterunspaces
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
PS C:\> [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:\> >
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.
Im zweiten Befehl führen Sie aus Enter-PSSession
, um eine Remotesitzung auf WS10TestServer zu öffnen. Im dritten Befehl fügen Sie an den Windows PowerShell ISE-Hostprozess an, der auf dem Remoteserver ausgeführt wird, indem Sie ausführen Enter-PSHostProcess
und 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 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, der ein Skript ausführt, TestWFVar1.ps1, indem Sie Debug-Runspace
ausführen und den Runspace anhand seiner ID 2 identifizieren, indem Sie den Id-Parameter hinzufügen. Da das Skript einen Haltepunkt enthält, wird der Debugger geöffnet.
Parameter
-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 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 Runspaceobjekt 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 Debug-Runspace übergeben.
Hinweise
Debug-Runspace
funktioniert für Runspaces, die sich im Zustand Geöffnet befinden. Wenn sich ein Runspacestatus von Geöffnet in einen anderen Zustand ändert, wird dieser Runspace automatisch aus der Liste der ausgeführten Anwendungen entfernt. Ein Runspace wird nur zur Liste der ausgeführten Elemente 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-Runspace
stammt, hat er eineDebug-Runspace
GUID-ID. - Wenn sie aus einem PowerShell-Workflow stammt und die Id des Workflowauftrags mit der id des aktuellen aktiven Debuggerworkflowauftrags identisch ist.