Debug-Runspace
Runspace를 사용하여 대화형 디버깅 세션을 시작합니다.
구문
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
Debug-Runspace
cmdlet은 로컬 또는 원격 활성 Runspace를 사용하여 대화형 디버깅 세션을 시작합니다. 먼저 Get-Process
실행하여 PowerShell과 연결된 프로세스를 찾은 다음, 프로세스에 연결할 ID 매개 변수에 지정된 프로세스 ID를 사용하여 Enter-PSHostProcess
후 PowerShell 호스트 프로세스 내의 Runspace를 나열하도록 Get-Runspace
실행하려는 Runspace를 찾을 수 있습니다.
디버그할 Runspace를 선택한 후, Runspace가 현재 명령 또는 스크립트를 실행 중이거나 스크립트가 중단점에서 중지된 경우 PowerShell은 Runspace에 대한 원격 디버거 세션을 엽니다. 원격 세션 스크립트를 디버그하는 것과 동일한 방식으로 Runspace 스크립트를 디버그할 수 있습니다.
프로세스를 실행하는 컴퓨터의 관리자이거나 디버그하려는 스크립트를 실행하는 경우에만 PowerShell 호스트 프로세스에 연결할 수 있습니다. 또한 현재 PowerShell 세션을 실행하는 호스트 프로세스를 입력할 수 없습니다. 다른 PowerShell 세션을 실행하는 호스트 프로세스만 입력할 수 있습니다.
예제
예제 1: 원격 Runspace 디버그
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:\> >
이 예제에서는 원격 컴퓨터인 WS10TestServer에서 열려 있는 Runspace를 디버그합니다. 명령의 첫 번째 줄에서는 원격 컴퓨터에서 Get-Process
실행하고 Windows PowerShell 호스트 프로세스를 필터링합니다. 이 예제에서는 Windows PowerShell ISE 호스트 프로세스인 프로세스 ID 1152를 디버그하려고 합니다.
두 번째 명령에서는 Enter-PSSession
실행하여 WS10TestServer에서 원격 세션을 엽니다. 세 번째 명령에서는 Enter-PSHostProcess
실행하고 첫 번째 명령 1152에서 얻은 호스트 프로세스의 ID를 지정하여 원격 서버에서 실행되는 Windows PowerShell ISE 호스트 프로세스에 연결합니다.
네 번째 명령에서는 Get-Runspace
실행하여 프로세스 ID 1152에 사용 가능한 Runspace를 나열합니다.
사용 중인 Runspace의 ID 번호를 확인합니다. 디버그하려는 스크립트를 실행하고 있습니다.
마지막 명령에서는 Debug-Runspace
실행하고 ID 매개 변수를 추가하여 TestWFVar1.ps1스크립트를 실행하는 열린 Runspace를 디버깅하고 ID 2로 Runspace를 식별합니다. 스크립트에 중단점이 있으므로 디버거가 열립니다.
매개 변수
-Confirm
cmdlet을 실행하기 전에 확인 메시지를 표시합니다.
형식: | SwitchParameter |
별칭: | cf |
Position: | Named |
Default value: | True |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Id
Runspace의 ID 번호를 지정합니다.
Get-Runspace
실행하여 Runspace ID를 표시할 수 있습니다.
형식: | Int32 |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InstanceId
인스턴스 ID로 runspace를 지정합니다. Get-Runspace
실행하여 표시할 수 있는 GUID입니다.
형식: | Guid |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Name
해당 이름으로 Runspace를 지정합니다.
Get-Runspace
실행하여 runspace의 이름을 표시할 수 있습니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Runspace
Runspace 개체를 지정합니다. 이 매개 변수에 대한 값을 제공하는 가장 간단한 방법은 필터링된 Get-Runspace
명령의 결과를 포함하는 변수를 지정하는 것입니다.
형식: | Runspace |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-WhatIf
cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.
형식: | SwitchParameter |
별칭: | wi |
Position: | Named |
Default value: | True |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
Get-Runspace
명령의 결과를 디버그-Runspace를 파이프할 수 있습니다.
참고
Debug-Runspace
열린 상태의 Runspace에서 작동합니다. Runspace 상태가 Opened에서 다른 상태로 변경되면 실행 중인 목록에서 해당 Runspace가 자동으로 제거됩니다. Runspace는 다음 조건을 충족하는 경우에만 실행 중인 목록에 추가됩니다.
- Invoke-Command에서 제공되는 경우 즉,
Invoke-Command
GUID ID가 있습니다. -
Debug-Runspace
; 즉,Debug-Runspace
GUID ID가 있습니다. - PowerShell 워크플로에서 제공되는 경우 해당 워크플로 작업 ID는 현재 활성 디버거 워크플로 작업 ID와 동일합니다.