Enter-PSHostProcess
로컬 프로세스를 사용하여 대화형 세션에 연결하고 입력합니다.
구문
Enter-PSHostProcess
[-Id] <Int32>
[[-AppDomainName] <String>]
[<CommonParameters>]
Enter-PSHostProcess
[-Process] <Process>
[[-AppDomainName] <String>]
[<CommonParameters>]
Enter-PSHostProcess
[-Name] <String>
[[-AppDomainName] <String>]
[<CommonParameters>]
Enter-PSHostProcess
[-HostProcessInfo] <PSHostProcessInfo>
[[-AppDomainName] <String>]
[<CommonParameters>]
Description
cmdlet은 Enter-PSHostProcess
로컬 프로세스를 사용하여 대화형 세션에 연결하고 입력합니다.
PowerShell을 호스트하고 원격 세션을 실행하는 새 프로세스를 만드는 대신 이미 PowerShell을 실행 중인 기존 프로세스에서 원격 대화형 세션이 실행됩니다. 지정된 프로세스에서 원격 세션과 상호 작용하는 경우 실행 중인 Runspace를 열거한 다음 실행 중 하나를 Debug-Runspace
Enable-RunspaceDebug
실행하여 디버그할 Runspace를 선택할 수 있습니다.
입력하려는 프로세스는 PowerShell(System.Management.Automation.dll)을 호스팅해야 합니다. 프로세스를 찾은 컴퓨터에서 Administrators 그룹의 구성원이거나 프로세스를 시작한 스크립트를 실행하는 사용자여야 합니다.
디버그할 Runspace를 선택한 후 현재 명령을 실행 중이거나 디버거에서 중지된 경우 Runspace에 대한 원격 디버그 세션이 열립니다. 그런 다음 다른 원격 세션 스크립트를 디버그하는 것과 동일한 방식으로 Runspace 스크립트를 디버그할 수 있습니다.
종료를 두 번 실행하여 디버깅 세션에서 분리한 다음 프로세스와 대화형 세션을 분리하거나 기존 디버거 종료 명령을 실행하여 스크립트 실행을 중지합니다.
Name 매개 변수를 사용하여 프로세스를 지정하고 지정된 이름을 가진 프로세스가 하나만 있으면 프로세스가 입력됩니다. 지정된 이름을 가진 프로세스가 두 개 이상 있으면 PowerShell에서 오류를 반환하고 지정된 이름으로 찾은 모든 프로세스를 나열합니다.
원격 컴퓨터 Enter-PSHostProcess
의 프로세스에 연결할 수 있도록 cmdlet은 지정된 원격 컴퓨터에서 사용하도록 설정되므로 원격 PowerShell 세션 내의 로컬 프로세스에 연결할 수 있습니다.
예제
예제 1부: PowerShell ISE 프로세스 내에서 Runspace 디버깅 시작
이 예제에서는 PowerShell 콘솔 내에서 실행 Enter-PSHostProcess
하여 PowerShell ISE 프로세스를 입력합니다. 결과 대화형 세션에서 실행 Get-Runspace
하여 디버그할 Runspace를 찾은 다음, Runspace를 디버그할 수 있습니다.
PS C:\> Enter-PSHostProcess -Name powershell_ise
[Process:1520]: PS C:\> Get-Runspace
Id Name InstanceId State Availability
-- ------- ----------- ------ -------------
1 Runspace1 2d91211d-9cce-42f0-ab0e-71ac258b32b5 Opened Available
2 Runspace2 a3855043-cb16-424a-a616-685360c3763b Opened RemoteDebug
3 MyLocalRS 2236dbd8-2105-4dec-a15a-a27d0bfaacb5 Opened LocalDebug
4 MyRunspace 771356e9-8c44-4b70-9de5-dd17cb41e48e Opened Busy
5 Runspace8 3e517382-a97a-49ba-9c3c-fd21f6664288 Broken None
예제 2부: 특정 Runspace 디버그
다음으로, 다른 사용자의 장기 실행 스크립트를 실행하는 Runspace ID 4를 디버그합니다. 반환된 Get-Runspace
목록에서 Runspace 상태가 열리고 가용성이 사용 중입니다 . 즉, Runspace가 여전히 장기 실행 스크립트를 실행하고 있음을 의미합니다. 또한 반환된 Get-Runspace
Runspace 개체에는 실행 중인 명령 스택의 ScriptStackTrace라는 NoteProperty가 있습니다(사용 가능한 경우).
[Process:1520]: PS C:\> (Get-Runspace -Id 4).ScriptStackTrace
Command Arguments Location
------- --------- --------
MyModuleWorkflowF1 {} TestNoFile3.psm1: line 6
WFTest1 {} TestNoFile2.ps1: line 14
TestNoFile2.ps1 {} TestNoFile2.ps1: line 22
<ScriptBlock> {} <No file>
[Process: 1520]: PS C:\> Debug-Runspace -Id 4
Hit Line breakpoint on 'C:\TestWFVar1.ps1:83'
At C:\TestWFVar1.ps1:83 char:1
+ $scriptVar = "Script Variable"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Process: 1520]: [RSDBG: 4]: PS C:\>
cmdlet을 실행 Debug-Runspace
하여 이 Runspace에서 대화형 디버깅 세션을 시작합니다.
예제 3부: 디버깅 세션 완료 및 종료
디버깅을 완료한 후 종료 디버거 명령을 실행하여 디버거가 연결되지 않은 상태에서 스크립트가 계속 실행되도록 합니다. 또는 q 또는 Stop 명령을 사용하여 디버거를 종료할 수 있습니다.
프로세스 작업을 마치면 cmdlet을 실행 Exit-PSHostProcess
하여 프로세스를 종료합니다. 그러면 프롬프트가 PS C:\>
표시됩니다.
[Process:346]: [RSDBG: 3]: PS C:\> exit
[Process:1520]: PS C:\>
[Process:1520]: PS C:\> Exit-PSHostProcess
PS C:\>
매개 변수
-AppDomainName
생략하면 연결할 애플리케이션 도메인 이름을 지정하고 DefaultAppDomain을 사용합니다. 애플리케이션 도메인 이름을 표시하는 데 사용합니다 Get-PSHostProcessInfo
.
형식: | String |
Position: | 1 |
Default value: | DefaultAppDomain |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-HostProcessInfo
PowerShell을 사용하여 연결할 수 있는 PSHostProcessInfo 개체를 지정합니다. 개체를 가져오는 데 사용합니다 Get-PSHostProcessInfo
.
형식: | PSHostProcessInfo |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Id
프로세스 ID별로 프로세스를 지정합니다. 프로세스 ID를 가져오려면 cmdlet을 Get-Process
실행합니다.
형식: | Int32 |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Name
프로세스 이름을 사용하여 프로세스를 지정합니다. 프로세스 이름을 얻으려면 cmdlet을 Get-Process
실행합니다. 작업 관리자에서 프로세스의 속성 대화 상자에서 프로세스 이름을 가져올 수도 있습니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Process
프로세스 개체의 프로세스를 지정합니다. 이 매개 변수를 사용하는 가장 간단한 방법은 변수에 입력하려는 프로세스를 반환하는 명령의 Get-Process
결과를 저장한 다음 변수를 이 매개 변수의 값으로 지정하는 것입니다.
형식: | Process |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
입력
참고
Enter-PSHostProcess
명령을 실행하는 PowerShell 세션의 프로세스를 입력할 수 없습니다. 그러나 다른 PowerShell 세션 또는 실행 Enter-PSHostProcess
중인 세션과 동시에 실행되는 PowerShell ISE 세션의 프로세스를 입력할 수 있습니다.
Enter-PSHostProcess
는 PowerShell을 호스팅하는 프로세스만 입력할 수 있습니다. 즉, PowerShell 엔진을 로드했습니다.
프로세스 내에서 프로세스를 종료하려면 종료를 입력한 다음 Enter 키를 누릅니다.
관련 링크
PowerShell