Dela via


Debug-Runspace

Startar en interaktiv felsökningssession med ett 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>]

Description

Cmdleten Debug-Runspace startar en interaktiv felsökningssession med ett lokalt eller fjärranslutet aktivt runspace. Du hittar en runspace som du vill felsöka genom att först köra Get-Process för att hitta processer som är associerade med PowerShell, sedan Enter-PSHostProcess med det process-ID som anges i ID-parametern som ska kopplas till processen och sedan Get-Runspace visa en lista över runspaces i PowerShell-värdprocessen.

När du har valt ett runspace som ska felsökas, om runspace för närvarande kör ett kommando eller skript, eller om skriptet har stoppats vid en brytpunkt, öppnar PowerShell en fjärrsession för felsökning för runspace. Du kan felsöka runspace-skriptet på samma sätt som fjärrsessionsskript debuggas.

Du kan bara ansluta till en PowerShell-värdprocess om du är administratör på den dator som kör processen eller om du kör skriptet som du vill felsöka. Du kan inte heller ange den värdprocess som kör den aktuella PowerShell-sessionen. Du kan bara ange en värdprocess som kör en annan PowerShell-session.

Exempel

Exempel 1: Felsöka en fjärrkörning

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

I det här exemplet felsöker du en runspace som är öppen på en fjärrdator, WS10TestServer. På den första raden i kommandot kör Get-Process du på fjärrdatorn och filtrerar efter Windows PowerShell värdprocesser. I det här exemplet vill du felsöka process-ID 1152, Windows PowerShell ISE-värdprocess.

I det andra kommandot kör Enter-PSSession du för att öppna en fjärrsession på WS10TestServer. I det tredje kommandot ansluter du till Windows PowerShell ISE-värdprocess som körs på fjärrservern genom att köra Enter-PSHostProcessoch ange ID för värdprocessen som du fick i det första kommandot, 1152.

I det fjärde kommandot listar du tillgängliga runspaces för process-ID 1152 genom att köra Get-Runspace. Du noterar ID-numret för körningsytan Upptagen. den kör ett skript som du vill felsöka.

I det senaste kommandot börjar du felsöka ett öppnat runspace som kör ett skript, TestWFVar1.ps1, genom att köra Debug-Runspaceoch identifiera körningsytan med dess ID, 2, genom att lägga till parametern ID . Eftersom det finns en brytpunkt i skriptet öppnas felsökningsprogrammet.

Parametrar

-Confirm

Uppmanar dig att bekräfta innan du kör cmdleten.

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

-Id

Anger ID-numret för ett runspace. Du kan köra Get-Runspace för att visa runspace-ID:t.

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

-InstanceId

Anger ett runspace efter dess instans-ID, ett GUID som du kan visa genom att köra Get-Runspace.

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

-Name

Anger ett runspace med dess namn. Du kan köra Get-Runspace för att visa namnen på runspaces.

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

-Runspace

Anger ett runspace-objekt. Det enklaste sättet att ange ett värde för den här parametern är att ange en variabel som innehåller resultatet av ett filtrerat Get-Runspace kommando.

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

-WhatIf

Visar vad som skulle hända om cmdleten kördes. Cmdleten körs inte.

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

Indata

Runspace

Du kan skicka resultatet av ett Get-Runspace kommando till Debug-Runspace.

Kommentarer

Debug-Runspace fungerar på runspaces som är i tillståndet Öppnade. Om ett körningstillstånd ändras från Öppnat till ett annat tillstånd tas det körningsutrymmet bort automatiskt från listan som körs. En runspace läggs bara till i listan som körs om den uppfyller följande villkor.

  • Om den kommer från Invoke-Command; den har alltså ett Invoke-Command GUID-ID.
  • Om den kommer från Debug-Runspacehar den ett Debug-Runspace GUID-ID.
  • Om det kommer från ett PowerShell-arbetsflöde och dess arbetsflödesjobb-ID är samma som det aktuella jobb-ID:t för aktivt felsökningsarbetsflöde.