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
Enter-PSHostProcess
cmdlet은 로컬 프로세스를 사용하여 대화형 세션에 연결하고 입력합니다.
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 State 열리고 가용성 사용 중이므로 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:\>
Debug-Runspace
cmdlet을 실행하여 이 runspace에서 대화형 디버깅 세션을 시작합니다.
예제 3부: 디버깅 세션 완료 및 종료
디버깅을 완료한 후 종료 디버거 명령을 실행하여 디버거가 연결되지 않은 상태에서 스크립트가 계속 실행되도록 합니다. 또는 q 또는 Stop 명령을 사용하여 디버거를 종료할 수 있습니다.
프로세스 작업을 마쳤으면 Exit-PSHostProcess
cmdlet을 실행하여 프로세스를 종료합니다. 그러면 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를 가져오려면 Get-Process
cmdlet을 실행합니다.
형식: | Int32 |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Name
프로세스 이름을 사용하여 프로세스를 지정합니다. 프로세스 이름을 얻으려면 Get-Process
cmdlet을 실행합니다. 작업 관리자에서 프로세스의 속성 대화 상자에서 프로세스 이름을 가져올 수도 있습니다.
형식: | 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