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>]
説明
Enter-PSHostProcess コマンドレットは に接続し、ローカル プロセスとの対話型セッションに入ります。
Windows PowerShellをホストしてリモート セッションを実行する新しいプロセスを作成する代わりに、リモートの対話型セッションは、既にWindows PowerShell実行されている既存のプロセスで実行されます。 指定したプロセスでリモート セッションを操作する場合は、実行中の実行空間を列挙し、Debug-Runspace または Enable-RunspaceDebug を実行してデバッグする実行空間を選択できます。
入力するプロセスは、ホスティング Windows PowerShell (System.Management.Automation.dll) である必要があります。 プロセスが見つかったコンピューターの Administrators グループのメンバーであるか、プロセスを開始したスクリプトを実行しているユーザーである必要があります。
デバッグする実行空間を選択した後、リモート デバッグ セッションが現在コマンドを実行している場合、またはデバッガーで停止している場合は、その実行空間に対して開かれます。 その後、他のリモート セッション スクリプトをデバッグするのと同じ方法で実行空間スクリプトをデバッグできます。
デバッグ セッションからデタッチし、プロセスとの対話型セッションを終了を 2 回実行するか、既存のデバッガー終了コマンドを実行してスクリプトの実行を停止します。
Name パラメーターを使用してプロセスを指定し、指定した名前のプロセスが 1 つだけ見つかった場合は、プロセスが入力されます。 指定した名前の複数のプロセスが見つかった場合、Windows PowerShellはエラーを返し、指定した名前で見つかったすべてのプロセスを一覧表示します。
リモート コンピューター上のプロセスへのアタッチをサポートするために、Enter-PSHostProcess コマンドレットは、リモート Windows PowerShell セッション内のローカル プロセスにアタッチできるように、指定されたリモート コンピューターで有効になっています。
例
例 1: Windows PowerShell ISE プロセス内で実行空間のデバッグを開始する
In this example, you run **Enter-PSHostProcess** from within the Windows PowerShell console to enter the Windows PowerShell ISE process. In the resulting interactive session, you can find a runspace that you want to debug by running Get-Runspace, and then debug the runspace.
PS C:\> Enter-PSHostProcess -Name powershell_ise
[Process:1520]: PS C:\Test\Documents>
Next, get available runspaces within the process you have entered.
PS C:\> [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
The runspace objects returned by **Get-Runspace** also have a NoteProperty called **ScriptStackTrace** of the running command stack, if available.Next, debug runspace ID 4, that is running another user's long-running script. From the list returned from **Get-Runspace**, note that the runspace state is **Opened**, and **Availability** is **Busy**, meaning that the runspace is still running the long-running script.
PS C:\> [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>
Start an interactive debugging session with this runspace by running the Debug-Runspace cmdlet.
PS C:\> [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:\> >
After you are finished debugging, allow the script to continue running without the debugger attached by running the **exit** debugger command. Alternatively, you can quit the debugger with the **q** or **Stop** commands.
PS C:\> [Process:346]: [RSDBG: 3]: PS C:\> > exit
[Process:1520]: PS C:\>
When you are finished working in the process, exit the process by running the Exit-PSHostProcess cmdlet. This returns you to the PS C:\> prompt.
PS C:\> [Process:1520]: PS C:\> Exit-PSHostProcess
PS C:\>
パラメーター
-AppDomainName
Type: | String |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostProcessInfo
Type: | PSHostProcessInfo |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Id
プロセス ID でプロセスを指定します。 プロセス ID を取得するには、Get-Process コマンドレットを実行します。
Type: | Int32 |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
プロセス名でプロセスを指定します。 プロセス名を取得するには、Get-Process コマンドレットを実行します。 タスク マネージャーのプロセスの [プロパティ] ダイアログ ボックスからプロセス名を取得することもできます。
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Process
プロセス オブジェクトによるプロセスを指定します。 このパラメーターを使用する最も簡単な方法は、変数に入力するプロセスを返す Get-Process コマンドの結果を保存し、変数をこのパラメーターの値として指定することです。
Type: | Process |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
入力
メモ
Enter-PSHostProcess は、コマンドを実行しているWindows PowerShell セッションのプロセスに入ることができません。 ただし、別のWindows PowerShell セッションのプロセス、または Enter-PSHostProcess を実行しているセッションと同時に実行されているWindows PowerShell ISE セッションを入力できます。
Enter-PSHostProcess では、Windows PowerShellをホストしているプロセスのみを入力できます。 つまり、Windows PowerShell エンジンが読み込まれました。
プロセス内からプロセスを終了するには、「exit」と入力し、Enter キーを押します。