Enter-PSHostProcess
Nawiązuje połączenie z sesją interaktywną i wchodzi w nią za pomocą procesu lokalnego.
Składnia
ProcessIdParameterSet (domyślnie)
Enter-PSHostProcess
[-Id] <Int32>
[[-AppDomainName] <String>]
[<CommonParameters>]
ProcessParameterSet
Enter-PSHostProcess
[-Process] <Process>
[[-AppDomainName] <String>]
[<CommonParameters>]
ProcessNameParameterSet
Enter-PSHostProcess
[-Name] <String>
[[-AppDomainName] <String>]
[<CommonParameters>]
PSHostProcessInfoParameterSet
Enter-PSHostProcess
[-HostProcessInfo] <PSHostProcessInfo>
[[-AppDomainName] <String>]
[<CommonParameters>]
Opis
Polecenie cmdlet Enter-PSHostProcess nawiązuje połączenie i wchodzi w interaktywną sesję z procesem lokalnym.
Zamiast tworzyć nowy proces hostowania programu Windows PowerShell i uruchamiania sesji zdalnej, sesja interaktywna jest uruchamiana w istniejącym procesie, który jest już uruchomiony w programie Windows PowerShell. Podczas interakcji z sesją zdalną w określonym procesie można wyliczyć uruchomione przestrzenie uruchamiania, a następnie wybrać przestrzeń runspace do debugowania, uruchamiając Debug-Runspace lub Enable-RunspaceDebug.
Proces, który chcesz wprowadzić, musi hostować program Windows PowerShell (System.Management.Automation.dll). Musisz być członkiem grupy Administratorzy na komputerze, na którym znajduje się proces, lub użytkownik, który uruchamia skrypt, który uruchomił proces.
Po wybraniu obszaru uruchamiania do debugowania zostanie otwarta sesja zdalnego debugowania dla obszaru uruchomieniowego, jeśli jest aktualnie uruchomiona polecenie lub jest zatrzymana w debugerze. Następnie można debugować skrypt runspace w taki sam sposób, jak w przypadku debugowania innych skryptów sesji zdalnej.
Odłącz się od sesji debugowania, a następnie interakcyjnej sesji z procesem, uruchamiając dwukrotnie wyjście lub zatrzymaj wykonywanie skryptu, uruchamiając istniejące polecenie zakończenia debugera.
Jeśli określisz proces przy użyciu parametru Nazwa i zostanie znaleziony tylko jeden proces o określonej nazwie, proces zostanie wprowadzony. Jeśli zostanie znaleziony więcej niż jeden proces o określonej nazwie, program Windows PowerShell zwróci błąd i wyświetli listę wszystkich procesów znalezionych z określoną nazwą.
Aby obsługiwać dołączanie do procesów na komputerach zdalnych, Enter-PSHostProcess polecenie cmdlet jest włączone w określonym komputerze zdalnym, dzięki czemu można dołączyć do procesu lokalnego w ramach zdalnej sesji programu Windows PowerShell.
Przykłady
Przykład 1. Rozpoczęcie debugowania przestrzeni uruchomieniowej w procesie środowiska Windows PowerShell ISE
W tym przykładzie należy uruchomić polecenie Enter-PSHostProcess z poziomu konsoli programu Windows PowerShell, aby wprowadzić proces środowiska Windows PowerShell ISE. W wynikowej sesji interaktywnej możesz znaleźć przestrzeń uruchomieniową, którą chcesz debugować, uruchamiając polecenie Get-Runspace, a następnie debugując przestrzeń uruchomieniową.
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:\>
Parametry
-AppDomainName
Polecenie cmdlet Enter-PSHostProcess nawiązuje połączenie i wchodzi w interaktywną sesję z procesem lokalnym.
Zamiast tworzyć nowy proces hostowania programu Windows PowerShell i uruchamiania sesji zdalnej, sesja interaktywna jest uruchamiana w istniejącym procesie, który jest już uruchomiony w programie Windows PowerShell. Podczas interakcji z sesją zdalną w określonym procesie można wyliczyć uruchomione przestrzenie uruchamiania, a następnie wybrać przestrzeń runspace do debugowania, uruchamiając Debug-Runspace lub Enable-RunspaceDebug.
Proces, który chcesz wprowadzić, musi hostować program Windows PowerShell (System.Management.Automation.dll). Musisz być członkiem grupy Administratorzy na komputerze, na którym znajduje się proces, lub użytkownik, który uruchamia skrypt, który uruchomił proces.
Po wybraniu obszaru uruchamiania do debugowania zostanie otwarta sesja zdalnego debugowania dla obszaru uruchomieniowego, jeśli jest aktualnie uruchomiona polecenie lub jest zatrzymana w debugerze. Następnie można debugować skrypt runspace w taki sam sposób, jak w przypadku debugowania innych skryptów sesji zdalnej.
Odłącz się od sesji debugowania, a następnie interakcyjnej sesji z procesem, uruchamiając dwukrotnie wyjście lub zatrzymaj wykonywanie skryptu, uruchamiając istniejące polecenie zakończenia debugera.
Jeśli określisz proces przy użyciu parametru Nazwa i zostanie znaleziony tylko jeden proces o określonej nazwie, proces zostanie wprowadzony. Jeśli zostanie znaleziony więcej niż jeden proces o określonej nazwie, program Windows PowerShell zwróci błąd i wyświetli listę wszystkich procesów znalezionych z określoną nazwą.
Aby obsługiwać dołączanie do procesów na komputerach zdalnych, Enter-PSHostProcess polecenie cmdlet jest włączone w określonym komputerze zdalnym, dzięki czemu można dołączyć do procesu lokalnego w ramach zdalnej sesji programu Windows PowerShell.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | 1 |
| Obowiązkowe: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-HostProcessInfo
Polecenie cmdlet Enter-PSHostProcess nawiązuje połączenie i wchodzi w interaktywną sesję z procesem lokalnym.
Zamiast tworzyć nowy proces hostowania programu Windows PowerShell i uruchamiania sesji zdalnej, sesja interaktywna jest uruchamiana w istniejącym procesie, który jest już uruchomiony w programie Windows PowerShell. Podczas interakcji z sesją zdalną w określonym procesie można wyliczyć uruchomione przestrzenie uruchamiania, a następnie wybrać przestrzeń runspace do debugowania, uruchamiając Debug-Runspace lub Enable-RunspaceDebug.
Proces, który chcesz wprowadzić, musi hostować program Windows PowerShell (System.Management.Automation.dll). Musisz być członkiem grupy Administratorzy na komputerze, na którym znajduje się proces, lub użytkownik, który uruchamia skrypt, który uruchomił proces.
Po wybraniu obszaru uruchamiania do debugowania zostanie otwarta sesja zdalnego debugowania dla obszaru uruchomieniowego, jeśli jest aktualnie uruchomiona polecenie lub jest zatrzymana w debugerze. Następnie można debugować skrypt runspace w taki sam sposób, jak w przypadku debugowania innych skryptów sesji zdalnej.
Odłącz się od sesji debugowania, a następnie interakcyjnej sesji z procesem, uruchamiając dwukrotnie wyjście lub zatrzymaj wykonywanie skryptu, uruchamiając istniejące polecenie zakończenia debugera.
Jeśli określisz proces przy użyciu parametru Nazwa i zostanie znaleziony tylko jeden proces o określonej nazwie, proces zostanie wprowadzony. Jeśli zostanie znaleziony więcej niż jeden proces o określonej nazwie, program Windows PowerShell zwróci błąd i wyświetli listę wszystkich procesów znalezionych z określoną nazwą.
Aby obsługiwać dołączanie do procesów na komputerach zdalnych, Enter-PSHostProcess polecenie cmdlet jest włączone w określonym komputerze zdalnym, dzięki czemu można dołączyć do procesu lokalnego w ramach zdalnej sesji programu Windows PowerShell.
Właściwości parametru
| Typ: | PSHostProcessInfo |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
PSHostProcessInfoParameterSet
| Position: | 0 |
| Obowiązkowe: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Id
Określa proces według identyfikatora procesu. Aby uzyskać identyfikator procesu, uruchom polecenie cmdlet Get-Process.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ProcessIdParameterSet
| Position: | 0 |
| Obowiązkowe: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Name
Określa proces według nazwy procesu. Aby uzyskać nazwę procesu, uruchom polecenie cmdlet Get-Process. Nazwy procesów można również pobrać z okna dialogowego Właściwości procesu w Menedżerze zadań.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ProcessNameParameterSet
| Position: | 0 |
| Obowiązkowe: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Process
Określa proces przez obiekt procesu. Najprostszym sposobem użycia tego parametru jest zapisanie wyników polecenia Get-Process, które zwraca proces, który ma zostać wprowadzony w zmiennej, a następnie określ zmienną jako wartość tego parametru.
Właściwości parametru
| Typ: | Process |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ProcessParameterSet
| Position: | 0 |
| Obowiązkowe: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
Process
Uwagi
Enter-PSHostProcess nie może wprowadzić procesu sesji programu Windows PowerShell, w której uruchamiasz polecenie. Można jednak wprowadzić proces innej sesji programu Windows PowerShell lub sesji środowiska WINDOWS PowerShell ISE uruchomionej w tym samym czasie co sesja, w której jest uruchomiona Enter-PSHostProcess.
Enter-PSHostProcess mogą wprowadzać tylko te procesy, które hostują program Windows PowerShell. Oznacza to, że załadowali aparat programu Windows PowerShell.
Aby zakończyć proces z poziomu procesu, wpisz exit, a następnie naciśnij Enter.