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-PSSessionprogram 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-PSSessionPolecenia Connect-PSSessioncmdlet , 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ż