about_PSSessions
Krótki opis
W tym artykule opisano sesje programu PowerShell (PSSessions) i wyjaśniono, jak nawiązać trwałe połączenie z komputerem zdalnym.
Długi opis
Aby uruchomić polecenia programu PowerShell na komputerze zdalnym, możesz użyć parametru ComputerName polecenia cmdlet lub utworzyć sesję programu PowerShell (PSSession) i uruchomić polecenia w programie PSSession.
Podczas tworzenia programu PSSession program PowerShell nawiązuje trwałe połączenie z komputerem zdalnym. Użyj programu PSSession, aby uruchomić serię powiązanych poleceń na komputerze zdalnym. Polecenia uruchamiane w tym samym programie PSSession mogą udostępniać dane, takie jak wartości zmiennych, aliasów i funkcji.
Możesz również utworzyć pssession na komputerze lokalnym i uruchomić w nim polecenia. Lokalna usługa PSSession używa infrastruktury komunikacji zdalnej programu PowerShell do tworzenia i obsługi programu PSSession.
Począwszy od programu Windows PowerShell 3.0, sesje PSSessions w systemie Windows są niezależne od sesji, w których są tworzone. Aktywne psSessions są utrzymywane na komputerze zdalnym (lub komputerze na końcu zdalnym lub "po stronie serwera" połączenia). W związku z tym w systemie Windows można odłączyć się od programu PSSession na zdalnym komputerze z systemem Windows i ponownie nawiązać z nim połączenie później z tego samego komputera lub z innego komputera z systemem Windows.
W tym temacie opisano sposób tworzenia, używania, pobierania i usuwania usług PSSessions. Aby uzyskać bardziej zaawansowane informacje, zobacz about_PSSession_Details.
Uwaga: usługi PSSessions używają infrastruktury komunikacji zdalnej programu PowerShell. Aby można było korzystać z programu PSSessions, należy skonfigurować komputery lokalne i zdalne na potrzeby komunikacji zdalnej. Aby uzyskać więcej informacji, zobacz about_Remote_Requirements.
W systemie Windows Vista i nowszych wersjach systemu 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, sesja jest tworzona i można uruchamiać polecenia w sesji. Możesz również dodawać elementy do sesji, takie jak moduły i przystawki, oraz 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ż tworzyć 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, można uruchamiać polecenia w sesji PSSession i dodawać i tworzyć elementy. Jednak w przeciwieństwie do sesji, która rozpoczyna się automatycznie, można kontrolować utworzone sesje PSSessions. Możesz pobrać, utworzyć, skonfigurować i usunąć je, rozłączyć i ponownie nawiązać z nimi połączenie, a następnie uruchomić wiele poleceń w ramach tej samej usługi PSSession. Usługa PSSession pozostaje dostępna do momentu jego usunięcia lub upłynął limit czasu.
Zazwyczaj program PSSession służy do uruchamiania serii powiązanych poleceń na komputerze zdalnym. Podczas tworzenia programu PSSession na komputerze zdalnym program PowerShell ustanawia trwałe połączenie z komputerem zdalnym w celu obsługi sesji.
Jeśli używasz parametru Invoke-Command
ComputerName polecenia cmdlet lub Enter-PSSession
do uruchomienia zdalnego polecenia lub do uruchomienia sesji interakcyjnej, program PowerShell tworzy sesję tymczasową na komputerze zdalnym i zamyka sesję natychmiast po zakończeniu lub po zakończeniu sesji interakcyjnej. Nie można kontrolować tych sesji tymczasowych i nie można ich używać do więcej niż jednego polecenia lub jednej sesji interaktywnej.
W programie PowerShell "bieżąca sesja" to sesja, w której 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 programu PSSession, jeśli potrzebujesz trwałego połączenia z komputerem zdalnym. Za pomocą programu PSSession można uruchomić serię poleceń, które udostępniają dane, takie 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ą zdalnego, aby uruchomić jedno polecenie lub serię niepowiązanych poleceń na jednym lub wielu komputerach.
W przypadku używania parametru ComputerName programu Invoke-Command
lub Enter-PSSession
program PowerShell ustanawia tymczasowe połączenie z komputerem zdalnym, a następnie zamyka połączenie natychmiast po zakończeniu wykonywania polecenia. Wszystkie utworzone elementy danych zostaną utracone po zamknięciu połączenia.
Inne polecenia cmdlet z parametrem ComputerName , takie jak Get-Eventlog
i Get-WmiObject
, używają różnych technologii komunikacji wirtualnej do zbierania danych. Brak tworzy trwałe połączenie, takie jak PSSession.
Jak utworzyć usługę PSSession
Aby utworzyć usługę PSSession, użyj New-PSSession
polecenia cmdlet . Aby utworzyć pssession na komputerze zdalnym, użyj parametru ComputerName polecenia New-PSSession
cmdlet.
Na przykład następujące polecenie tworzy nową konsolę PSSession na komputerze Server01.
New-PSSession -ComputerName Server01
Po przesłaniu polecenia New-PSSession
tworzy pssession i zwraca obiekt reprezentujący psSession. Obiekt można zapisać w zmiennej podczas tworzenia programu PSSession lub użyć Get-PSSession
polecenia , aby uzyskać pssession w późniejszym czasie.
Na przykład następujące polecenie tworzy nową konsolę PSSession na komputerze Server01 i zapisuje wynikowy obiekt w zmiennej $ps.
$ps = New-PSSession -ComputerName Server01
How to Create PSSessions on Multiple Computers
Aby utworzyć psSessions na wielu komputerach, użyj parametru New-PSSession
ComputerName polecenia cmdlet. Wpisz nazwy komputerów zdalnych na liście rozdzielanej przecinkami.
Aby na przykład utworzyć serwery PSSessions na komputerach Server01, Server02 i Server03, wpisz:
New-PSSession -ComputerName Server01, Server02, Server03
New-PSSession
Tworzy jedną sesję PSSession na każdym z komputerów zdalnych.
How to Get PSSessions
Aby uzyskać pliki PSSessions, które zostały utworzone w bieżącej sesji, użyj Get-PSSession
polecenia cmdlet bez parametru ComputerName . Get-PSSession
Zwraca ten sam typ obiektu, który New-PSSession
zwraca.
Następujące polecenie pobiera wszystkie sesje PSSessions, które zostały utworzone w bieżącej sesji.
Get-PSSession
Domyślny ekran 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żna również zapisać pliki PSSessions w zmiennej. Następujące polecenie pobiera pliki PSSessions i zapisuje je w zmiennej $ps 123.
$ps123 = Get-PSSession
W przypadku korzystania z poleceń cmdlet PSSession można odwołać się do psSession według jego identyfikatora, nazwy lub identyfikatora wystąpienia (identyfikator GUID). Następujące polecenie pobiera identyfikator PSSession i zapisuje go w zmiennej $ps 01.
$ps01 = Get-PSSession -Id 1
Począwszy od programu Windows PowerShell 3.0, sesje PSSessions są obsługiwane na komputerze zdalnym. Aby uzyskać pliki PSSessions utworzone na określonych komputerach zdalnych, użyj parametru Get-PSSession
ComputerName polecenia cmdlet . Następujące polecenie pobiera pliki 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 programie Windows PowerShell 2.0 Get-PSSession
program pobiera tylko sesje PSSessions, które zostały utworzone w bieżącej sesji. Nie pobiera sesji PSSessions, które zostały utworzone w innych sesjach lub na innych komputerach, nawet jeśli sesje są połączone i są uruchamiane polecenia na komputerze lokalnym.
Jak uruchamiać polecenia w programie PSSession
Aby uruchomić polecenie w co najmniej jednym psSessions, użyj Invoke-Command
polecenia cmdlet .
Użyj parametru Sesja, aby określić parametry PSSessions i ScriptBlock w celu określenia polecenia.
Aby na przykład uruchomić Get-ChildItem
polecenie ("dir") w każdej z trzech psSessions zapisanych w zmiennej $ps 123, wpisz:
Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }
How to Delete PSSessions
Po zakończeniu pracy z programem PSSession użyj Remove-PSSession
polecenia cmdlet , aby usunąć program PSSession i zwolnić używane zasoby.
Remove-PSSession -Session $ps
lub
Remove-PSSession -Id 1
Aby usunąć pssession z komputera zdalnego, użyj parametru Remove-PSSession
ComputerName polecenia cmdlet.
Remove-PSSession -ComputerName Server01 -Id 1
Jeśli nie usuniesz programu PSSession, narzędzie PSSession pozostanie dostępne do użycia, dopóki nie upłynął limit czasu.
Można również użyć parametru New-PSSessionOption
IdleTimeout polecenia cmdlet, aby ustawić czas wygaśnięcia bezczynności PSSession. Aby uzyskać więcej informacji, zobacz New-PSSessionOption.
Polecenia cmdlet PSSession
Aby uzyskać listę poleceń cmdlet PSSession, wpisz:
Get-Help *-PSSession
- Połączenie-PSSession: Połączenie psSession do bieżącej sesji
- Disconnect-PSSession: rozłącza sesję PSSession z 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ą sesję PSSession na komputerze lokalnym lub zdalnym
- Receive-PSSession: pobiera wyniki poleceń uruchomionych w rozłączonej sesji
- Remove-PSSession: usuwa sesje PSSessions w bieżącej sesji
Uwaga
Rozłączone sesje są obsługiwane tylko w systemie Windows. Polecenia Connect-PSSession
cmdlet , Disconnect-PSSession
i Receive-PSSession
są dostępne tylko w systemie Windows. Aby uzyskać więcej informacji na temat rozłączonych sesji, zobacz about_Remote_Disconnected_Session
Więcej informacji
Aby uzyskać więcej informacji na temat programu PSSessions, zobacz about_PSSession_Details.