다음을 통해 공유


Debug-Runspace

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>]

Description

cmdlet은 Debug-Runspace 로컬 또는 원격 활성 Runspace를 사용하여 대화형 디버깅 세션을 시작합니다. 먼저 실행 Get-Process 하여 PowerShell과 연결된 프로세스를 찾은 다음 Enter-PSHostProcess Id 매개 변수에 지정된 프로세스 ID를 사용하여 프로세스에 연결한 다음 Get-Runspace PowerShell 호스트 프로세스 내의 Runspace를 나열하여 디버그하려는 Runspace를 찾을 수 있습니다.

디버그할 Runspace를 선택한 후, Runspace가 현재 명령 또는 스크립트를 실행 중이거나 스크립트가 중단점에서 중지된 경우 PowerShell은 Runspace에 대한 원격 디버거 세션을 엽니다. 원격 세션 스크립트를 디버그하는 것과 동일한 방식으로 Runspace 스크립트를 디버그할 수 있습니다.

프로세스를 실행하는 컴퓨터의 관리자이거나 디버그하려는 스크립트를 실행하는 경우에만 PowerShell 호스트 프로세스에 연결할 수 있습니다. 또한 현재 PowerShell 세션을 실행하는 호스트 프로세스를 입력할 수 없습니다. 다른 PowerShell 세션을 실행하는 호스트 프로세스만 입력할 수 있습니다.

예제

예제 1: 원격 Runspace 디버그

이 예제에서는 원격 컴퓨터인 WS10TestServer에서 열려 있는 Runspace를 디버그합니다. 명령의 첫 번째 줄에서 원격 컴퓨터에서 실행하고 Get-Process Windows PowerShell 호스트 프로세스를 필터링합니다. 이 예제에서는 Windows PowerShell ISE 호스트 프로세스인 프로세스 ID 1152를 디버그하려고 합니다.

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

두 번째 명령에서는 WS10TestServer에서 원격 세션을 열기 위해 실행 Enter-PSSession 합니다. 세 번째 명령에서는 원격 서버에서 실행되는 Enter-PSHostProcessWindows PowerShell ISE 호스트 프로세스에 연결하고 첫 번째 명령 1152에서 가져온 호스트 프로세스의 ID를 지정합니다.

네 번째 명령에서는 실행 Get-Runspace하여 프로세스 ID 1152에 사용 가능한 Runspace를 나열합니다. 사용 중인 Runspace의 ID 번호를 확인합니다. 디버그하려는 스크립트를 실행하고 있습니다.

마지막 명령에서는 ID 매개 변수를 추가하여 스크립트TestWFVar1.ps1를 실행하는 열린 Runspace 디버깅을 시작하고 Debug-RunspaceID(2)로 Runspace를 식별합니다. 스크립트에 중단점이 있으므로 디버거가 열립니다.

매개 변수

-BreakAll

디버거가 연결될 때 현재 위치에서 즉시 중단될 수 있습니다.

이 매개 변수는 PowerShell 7.2에 추가되었습니다.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

cmdlet을 실행하기 전에 확인 메시지가 표시됩니다.

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

-Id

Runspace의 ID 번호를 지정합니다. 실행 Get-Runspace 하여 Runspace ID를 표시할 수 있습니다.

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

-InstanceId

실행하여 표시 Get-Runspace할 수 있는 GUID인 인스턴스 ID로 Runspace를 지정합니다.

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

-Name

해당 이름으로 Runspace를 지정합니다. 실행 Get-Runspace 하여 Runspace의 이름을 표시할 수 있습니다.

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

-Runspace

Runspace 개체를 지정합니다. 이 매개 변수에 대한 값을 제공하는 가장 간단한 방법은 필터링된 Get-Runspace 명령의 결과를 포함하는 변수를 지정하는 것입니다.

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

-WhatIf

cmdlet이 실행될 경우 결과 동작을 표시합니다. cmdlet이 실행되지 않습니다.

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

입력

Runspace

명령의 결과를 이 cmdlet으로 Get-Runspace 파이프할 수 있습니다.

참고

Debug-Runspace 는 Opened 상태인 Runspace에서 작동합니다. Runspace 상태가 Opened에서 다른 상태로 변경되면 실행 중인 목록에서 해당 Runspace가 자동으로 제거됩니다. Runspace는 다음 조건을 충족하는 경우에만 실행 중인 목록에 추가됩니다.

  • Invoke-Command에서 제공되는 경우 즉, GUID ID가 있습니다 Invoke-Command .
  • 에서 오는 Debug-Runspace경우 즉, GUID ID가 있습니다 Debug-Runspace .
  • PowerShell 워크플로에서 제공되는 경우 해당 워크플로 작업 ID는 현재 활성 디버거 워크플로 작업 ID와 동일합니다.