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-PSHostProcess
Windows PowerShell ISE 호스트 프로세스에 연결하고 첫 번째 명령 1152에서 가져온 호스트 프로세스의 ID를 지정합니다.
네 번째 명령에서는 실행 Get-Runspace
하여 프로세스 ID 1152에 사용 가능한 Runspace를 나열합니다.
사용 중인 Runspace의 ID 번호를 확인합니다. 디버그하려는 스크립트를 실행하고 있습니다.
마지막 명령에서는 ID 매개 변수를 추가하여 스크립트TestWFVar1.ps1
를 실행하는 열린 Runspace 디버깅을 시작하고 Debug-Runspace
ID(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 |
입력
명령의 결과를 이 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와 동일합니다.
관련 링크
PowerShell