about_PSSessions
Krótki opis
Opisuje sesje programu PowerShell (PSSessions) i wyjaśnia, jak nawiązać trwałe połączenie z komputerem zdalnym.
Długi opis
Aby uruchomić polecenia programu PowerShell na komputerze zdalnym, można użyć parametru ComputerName polecenia cmdlet lub utworzyć sesję programu PowerShell (PSSession) i uruchomić polecenia w sesji PSSession.
Podczas tworzenia sesji PSSession program PowerShell ustanawia trwałe połączenie z komputerem zdalnym. Użyj sesji PSSession, aby uruchomić serię powiązanych poleceń na komputerze zdalnym. Polecenia uruchamiane w tej samej sesji PSSession mogą udostępniać dane, takie jak wartości zmiennych, aliasów i funkcji.
Można również utworzyć pssession na komputerze lokalnym i uruchomić w nim polecenia. Lokalna pssession używa infrastruktury komunikacji zdalnej programu PowerShell do tworzenia i obsługi pssession.
Począwszy od Windows PowerShell 3.0, pssessions na Windows są niezależne od sesji, w których są tworzone. Aktywne pssessions są utrzymywane na komputerze zdalnym (lub komputera na zdalnym końcu lub "po stronie serwera" połączenia). W związku z tym na komputerze Windows można rozłączyć się z sesji PSSession na zdalnym komputerze Windows i ponownie połączyć się z nim w późniejszym czasie z tego samego komputera lub z innego Windows komputera.
W tym temacie wyjaśniono, jak tworzyć, używać, pobrać i usunąć program PSSessions. Aby uzyskać bardziej zaawansowane informacje, zobacz about_PSSession_Details.
Uwaga: program PSSessions używa infrastruktury komunikacji zdalnej programu PowerShell. Aby można było korzystać z sesji PSSessions, należy skonfigurować komputery lokalne i zdalne do komunikacji zdalnej. Aby uzyskać więcej informacji, zobacz about_Remote_Requirements.
W Windows Vista i nowszych Windows, aby utworzyć PSSession na komputerze lokalnym, należy uruchomić program PowerShell z opcją "Uruchom jako administrator".
Co to jest sesja?
Sesja to środowisko, w którym działa program PowerShell.
Za każdym razem, gdy uruchamiasz program PowerShell, jest tworzona sesja i możesz uruchamiać polecenia w sesji. Można również dodawać do sesji elementy, takie jak moduły i przystawki, a także tworzyć elementy, takie jak zmienne, funkcje i aliasy. Te elementy istnieją tylko w sesji i są usuwane po zakończeniu sesji.
Można również utworzyć sesje zarządzane przez użytkownika, znane jako "sesje programu PowerShell" lub "PSSessions" na komputerze lokalnym lub na komputerze zdalnym. Podobnie jak w przypadku sesji domyślnej, polecenia można uruchamiać w sesji PSSession oraz dodawać i tworzyć elementy. Jednak w przeciwieństwie do sesji, która jest uruchamiana automatycznie, można kontrolować tworzone przez Ciebie sesje PSSessions. Można je pobrać, utworzyć, skonfigurować i usunąć, rozłączyć i ponownie nawiązać z nimi połączenie oraz uruchomić wiele poleceń w tym samym pssession. Ssesja PSSession pozostaje dostępna do momentu jej usunięcia lub przekreślenia.
Zazwyczaj tworzy się pssession do uruchamiania serii powiązanych poleceń na komputerze zdalnym. Podczas tworzenia sesji PSSession na komputerze zdalnym program PowerShell ustanawia trwałe połączenie z komputerem zdalnym w celu obsługi sesji.
W przypadku użycia parametru ComputerName Invoke-Command
polecenia cmdlet lub Enter-PSSession
do uruchomienia polecenia zdalnego lub do uruchomienia sesji interakcyjnej program PowerShell tworzy sesję tymczasową na komputerze zdalnym i zamyka sesję natychmiast po zakończeniu polecenia lub zaraz po zakończeniu sesji interakcyjnej. Nie można kontrolować tych sesji tymczasowych i nie można ich używać dla więcej niż jednego polecenia lub jednej sesji interaktywnej.
W programie PowerShell "bieżąca sesja" to sesja, w trakcie których pracujesz. "Bieżąca sesja" może odwoływać się do dowolnej sesji, w tym sesji tymczasowej lub sesji PSSession.
Dlaczego warto używać pssession?
Użyj sesji PSSession, gdy potrzebne jest trwałe połączenie z komputerem zdalnym. Za pomocą sesji PSSession można uruchomić serię poleceń, które współdzielą dane, takich jak wartość zmiennych, zawartość funkcji lub definicja aliasu.
Polecenia zdalne można uruchamiać bez tworzenia sesji PSSession. Użyj parametru ComputerName poleceń cmdlet z obsługą zdalną, aby uruchomić jedno polecenie lub serię niepowiązanych poleceń na jednym lub wielu komputerach.
W przypadku użycia parametru ComputerName Invoke-Command
programu lub Enter-PSSession
program PowerShell ustanawia tymczasowe połączenie z komputerem zdalnym, a następnie zamyka połączenie zaraz po zakończeniu polecenia. Wszystkie elementy danych, które utworzysz, zostaną utracone po zamknięciu połączenia.
Inne polecenia cmdlet, które mają parametr ComputerName , Get-Eventlog
takie jak i Get-WmiObject
, używają różnych technologii komunikacji zdalnej do zbierania danych. Brak tworzy trwałe połączenie, takie jak PSSession.
How to Create a PSSession
Aby utworzyć pssession, użyj New-PSSession
polecenia cmdlet. Aby utworzyć pssession na komputerze zdalnym, użyj ComputerName parametru New-PSSession
polecenia cmdlet.
Na przykład następujące polecenie tworzy nową pssession na komputerze Server01.
New-PSSession -ComputerName Server01
Po przesłaniu polecenia program New-PSSession
tworzy polecenie PSSession i zwraca obiekt reprezentujący pssession. Obiekt można zapisać w zmiennej podczas tworzenia sesji PSSession Get-PSSession
lub użyć polecenia w celu uzyskania sesji PSSession w późniejszym czasie.
Na przykład następujące polecenie tworzy nową sesji PSSession na komputerze Server01 i zapisuje wynikowy obiekt w $ps zmiennej.
$ps = New-PSSession -ComputerName Server01
How to Create PSSessions on Multiple Computers
Aby utworzyć program PSSessions na wielu komputerach, użyj parametru ComputerName polecenia New-PSSession
cmdlet . Wpisz nazwy komputerów zdalnych na liście rozdzielonych przecinkami.
Aby na przykład utworzyć pssessions na komputerach Server01, Server02 i Server03, wpisz:
New-PSSession -ComputerName Server01, Server02, Server03
New-PSSession
Tworzy jedną pssession na każdym komputerze zdalnym.
How to Get PSSessions
Aby uzyskać pssessions, które zostały utworzone w bieżącej sesji, Get-PSSession
użyj polecenia cmdlet bez ComputerName parametru . Get-PSSession
Zwraca ten sam typ obiektu, który zwraca New-PSSession
wartość .
Następujące polecenie pobiera wszystkie pssessions, które zostały utworzone w bieżącej sesji.
Get-PSSession
Domyślny ekran programu PSSessions pokazuje ich identyfikator i domyślną nazwę wyświetlaną. Podczas tworzenia sesji można przypisać alternatywną nazwę wyświetlaną.
Id Name ComputerName State ConfigurationName
--- ---- ------------ ----- ---------------------
1 Session1 Server01 Opened Microsoft.PowerShell
2 Session2 Server02 Opened Microsoft.PowerShell
3 Session3 Server03 Opened Microsoft.PowerShell
Możesz również zapisać pssessions w zmiennej. Następujące polecenie pobiera pssessions i zapisuje je w $zmiennej ps123.
$ps123 = Get-PSSession
W przypadku korzystania z polecenia cmdlet PSSession można odwołać się do sesji PSSession, używając jej identyfikatora, nazwy lub identyfikatora wystąpienia (identyfikatora GUID). Następujące polecenie pobiera pssession na jego identyfikator i zapisuje go w $zmiennej ps01.
$ps01 = Get-PSSession -Id 1
Począwszy od Windows PowerShell 3.0, pssessions są utrzymywane na komputerze zdalnym. Aby pobrać program PSSessions utworzony na określonych komputerach zdalnych, użyj parametru ComputerName Get-PSSession
polecenia cmdlet . Następujące polecenie pobiera pssessions utworzone na komputerze zdalnym Server01. Obejmuje to sesje PSSessions utworzone w bieżącej sesji i w innych sesjach na komputerze lokalnym lub innych komputerach.
Get-PSSession -ComputerName Server01
W Windows PowerShell 2.0 program Get-PSSession
pobiera tylko te sesje PSSessions, które zostały utworzone w bieżącej sesji. Nie powoduje to uzyskania programu PSSessions utworzonych w innych sesjach lub na innych komputerach, nawet jeśli sesje są połączone z programem i są uruchomione polecenia na komputerze lokalnym.
Jak uruchamiać polecenia w pssession
Aby uruchomić polecenie w co najmniej jednej konsoli PSSessions, użyj Invoke-Command
polecenia cmdlet .
Użyj session parametru, aby określić PSSessions i ScriptBlock parametru, aby określić polecenie.
Na przykład aby uruchomić Get-ChildItem
polecenie ("dir") w każdym z trzech pssessions zapisane w zmiennej $ps 123, wpisz:
Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }
How to Delete PSSessions
Po zakończeniu pracy z poleceniem PSSession Remove-PSSession
użyj polecenia cmdlet , aby usunąć polecenie PSSession i zwolnić zasoby, których używa.
Remove-PSSession -Session $ps
lub
Remove-PSSession -Id 1
Aby usunąć pssession z komputera zdalnego, użyj ComputerName parametru Remove-PSSession
polecenia cmdlet.
Remove-PSSession -ComputerName Server01 -Id 1
Jeśli nie usuniesz pssession, PSSession pozostaje dostępne do użycia, dopóki nie ukreśli.
Można również użyć IdleTimeout New-PSSessionOption
parametru polecenia cmdlet, aby ustawić czas wygaśnięcia dla bezczynny pssession. Aby uzyskać więcej informacji, zobacz New-PSSessionOption.
Polecenia cmdlet PSSession
Aby uzyskać listę pssession polecenia cmdlet, wpisz:
Get-Help *-PSSession
- Połączenie-PSSession: łączy sesję PSSession z bieżącą sesją
- Disconnect-PSSession: odłącza sesję PSSession od bieżącej sesji
- Enter-PSSession: uruchamia sesję interaktywną
- Exit-PSSession: Kończy sesję interaktywną
- Get-PSSession: Pobiera sesje PSSessions w bieżącej sesji
- New-PSSession: tworzy nową pssession na komputerze lokalnym lub zdalnym
- Receive-PSSession: pobiera wyniki poleceń, które zostały uruchomione w sesji rozłączenia
- Remove-PSSession: Usuwa pssessions w bieżącej sesji
Uwaga
Odłączone sesje są obsługiwane tylko w Windows. Disconnect-PSSession
Polecenia Connect-PSSession
cmdlet , i Receive-PSSession
są dostępne tylko na Windows. Aby uzyskać więcej informacji na temat rozłączonych sesji, zobacz about_Remote_Disconnected_Session
Aby uzyskać więcej informacji
Aby uzyskać więcej informacji na temat konsoli PSSessions, zobacz about_PSSession_Details.
Zobacz też
Opinia
Prześlij i wyświetl opinię dla