Udostępnij za pośrednictwem


about_PSSession_Details

Krótki opis

Zawiera szczegółowe informacje o sesjach programu PowerShell i roli, jaką odgrywają w poleceniach zdalnych.

Długi opis

Sesja to środowisko, w którym działa program PowerShell. Sesja jest tworzona za każdym razem, gdy uruchamiasz program PowerShell. Możesz utworzyć dodatkowe sesje o nazwie "sesje programu PowerShell" lub "sesje PSSessions" na komputerze lub innym komputerze.

W przeciwieństwie do sesji tworzonych przez program PowerShell możesz kontrolować utworzone sesje PSSession i zarządzać nimi.

PsSessions odgrywają ważną rolę w przetwarzaniu zdalnym. Podczas tworzenia programu PSSession połączonego z komputerem zdalnym program PowerShell nawiązuje trwałe połączenie z komputerem zdalnym w celu obsługi sesji PSSession. Narzędzie PSSession umożliwia uruchamianie serii poleceń, funkcji i skryptów, które udostępniają dane.

Ten temat zawiera szczegółowe informacje na temat sesji i sesji PSSessions w programie PowerShell. Aby uzyskać podstawowe informacje o zadaniach, które można wykonywać za pomocą sesji, zobacz about_PSSessions.

Informacje o sesjach

Technicznie sesja to środowisko wykonawcze, w którym działa program PowerShell. Każda sesja obejmuje wystąpienie aparatu System.Management.Automation i program hosta, w którym działa program PowerShell. Host może być znaną konsolą programu PowerShell lub innym programem, który uruchamia polecenia, takie jak Cmd.exe, lub program utworzony do hostowania programu PowerShell, takiego jak Windows PowerShell zintegrowane środowisko skryptów (ISE). Z perspektywy systemu Windows sesja jest procesem systemu Windows na komputerze docelowym.

Każda sesja jest konfigurowana niezależnie. Zawiera własne właściwości, własne zasady wykonywania i własne profile. Środowisko, które istnieje, gdy sesja jest tworzona, utrzymuje się przez cały okres istnienia, nawet jeśli zmienisz środowisko na komputerze. Wszystkie sesje są tworzone w zakresie globalnym, nawet sesje tworzone w skry skrycie.

W sesji można uruchomić tylko jedno polecenie (lub potok poleceń) jednocześnie. Drugie polecenie jest uruchamiane synchronicznie (po jednym naraz) czeka do czterech minut na ukończenie pierwszego polecenia. Drugie polecenie jest uruchamiane asynchronicznie (współbieżnie) kończy się niepowodzeniem.

Informacje o usłudze PSSessions

Sesja jest tworzona za każdym razem, gdy uruchamiasz program PowerShell. Program PowerShell tworzy sesje tymczasowe do uruchamiania poszczególnych poleceń. Można jednak również tworzyć sesje (nazywane "sesjami programu PowerShell" lub "sesjami PSSessions"), którymi sterujesz i którymi zarządzasz.

Sesje PSSession mają kluczowe znaczenie dla poleceń zdalnych. Jeśli używasz parametru Invoke-CommandComputerName poleceń cmdlet lubEnter-PSSession, program PowerShell ustanawia sesję tymczasową do uruchomienia polecenia, a następnie zamyka sesję zaraz po zakończeniu polecenia lub sesji interaktywnej.

Jeśli jednak używasz New-PSSession polecenia cmdlet do utworzenia sesji PSSession, program PowerShell ustanawia trwałą sesję na komputerze zdalnym, w którym można uruchomić wiele poleceń lub sesji interakcyjnych. Utworzone pliki PSSessions pozostają otwarte i dostępne do użycia do czasu ich usunięcia lub do momentu zamknięcia sesji, w której zostały utworzone.

Podczas tworzenia programu PSSession na komputerze zdalnym system tworzy proces programu PowerShell na komputerze zdalnym i nawiązuje połączenie z komputera lokalnego do procesu na komputerze zdalnym. Podczas tworzenia programu PSSession na komputerze lokalnym zarówno nowy proces, jak i połączenia są tworzone na komputerze lokalnym.

Kiedy potrzebuję pssession?

Polecenia Invoke-Command cmdlet i Enter-PSSession mają parametry ComputerName i Session . Możesz użyć dowolnego polecenia, aby uruchomić polecenie zdalne.

Użyj parametru ComputerName , aby uruchomić jedno polecenie lub serię niepowiązanych poleceń na jednym lub wielu komputerach.

Do uruchamiania poleceń, które udostępniają dane, potrzebne jest trwałe połączenie z komputerem zdalnym. W takim przypadku utwórz sesję PSSession, a następnie użyj parametru Sesja , aby uruchomić polecenia w sesji PSSession.

Wiele innych poleceń cmdlet, które pobierają dane z komputerów zdalnych, takich jak Get-Process, Get-Service, Get-EventLogi Get-WmiObject mają tylko parametr ComputerName . Używają technologii innych niż zdalna komunikacja zdalna programu PowerShell. Te polecenia cmdlet nie mają parametru Sesja , ale można użyć Invoke-Command polecenia cmdlet do uruchomienia tych poleceń w sesji PSSession.

Jak mogę Twórca psSession?

Aby utworzyć plik PSSession, użyj New-PSSession polecenia cmdlet . Za pomocą New-PSSession polecenia można utworzyć sesję PSSession na komputerze lokalnym lub zdalnym.

Czy mogę Twórca psSession na dowolnym komputerze?

Aby utworzyć sesję PSSession podłączoną do komputera zdalnego, należy skonfigurować komputer do komunikacji zdalnej w programie PowerShell. Bieżący użytkownik musi być członkiem grupy Administratorzy na komputerze zdalnym lub bieżący użytkownik musi mieć możliwość podania poświadczeń członka grupy Administratorzy. Aby uzyskać więcej informacji, zobacz about_Remote_Requirements.

Czy mogę wyświetlić moje sesje PSSessions w innych sesjach?

Począwszy od Windows PowerShell 3.0, parametr Get-PSSessionComputerName polecenia cmdlet pobiera pssessions utworzone na określonych komputerach zdalnych.

Aktywne sesje PSSession są przechowywane na komputerze zdalnym (po stronie serwera) połączenia i można je pobrać z dowolnej sesji na dowolnym komputerze.

Jeśli na przykład utworzysz sesję PSSession z komputera Server01 na komputer Server02, a następnie przełączysz się na komputer Server03, możesz użyć polecenia podobnego do poniższego, aby uzyskać sesję.

Get-PSSession -ComputerName Server02

Nawet jeśli rozłączysz się z sesją, sesja jest utrzymywana na komputerze zdalnym do momentu jego usunięcia lub upłynął limit czasu.

W Windows PowerShell 2.0 można uzyskać tylko sesje PSSessions utworzone w bieżącej sesji. Nie można pobrać sesji PSSessions utworzonych w innych sesjach.

Aby uzyskać więcej informacji, zobacz Get-PSSession.

Czy mogę zobaczyć pssessions utworzone przez inne osoby na moim komputerze?

Można uzyskać tylko sesje PSSessions utworzone przez inne osoby i zarządzać nimi tylko wtedy, gdy możesz podać poświadczenia użytkownika, który utworzył sesję PSSession lub konfigurację sesji, której używa psSession, obejmuje poświadczenia Uruchom jako. W przeciwnym razie możesz pobrać, nawiązać połączenie, użyć i zarządzać tylko utworzonymi psSessionsami.

Czy mogę nawiązać połączenie z programem PSSession z innego komputera?

Począwszy od Windows PowerShell 3.0, sesje PSSessions na komputerach z systemem Windows są niezależne od sesji, w których zostały utworzone. Aktywne sesje PSSession są przechowywane na komputerze po stronie zdalnej lub "po stronie serwera" połączenia.

Na komputerze z systemem Windows można użyć Disconnect-PSSession polecenia cmdlet , aby odłączyć się od pssession. Sesja PSSession jest odłączona od sesji lokalnej, ale jest utrzymywana na komputerze zdalnym. Polecenia są nadal uruchamiane w rozłączonym programie PSSession. Program PowerShell można zamknąć i zamknąć komputer źródłowy bez przerywania działania programu PSSession.

Następnie jeszcze kilka godzin później możesz użyć Get-PSSession polecenia cmdlet , aby uzyskać sesję PSSession i Connect-PSSession polecenie cmdlet w celu nawiązania połączenia z programem PSSession z nowej sesji na innym komputerze z systemem Windows.

Aby uzyskać więcej informacji, zobacz about_Remote_Disconnected_Sessions.

Co się stanie z moim PSSession, jeśli mój komputer przestanie działać?

Rozłączone sesje PSSessions są niezależne od sesji, w których zostały utworzone. Jeśli odłączysz program PSSession, a następnie zamkniesz komputer źródłowy, program PSSession zostanie zachowany na komputerze zdalnym.

Ponadto program PowerShell próbuje odzyskać aktywne sesje PSSessions, które są rozłączone przypadkowo, takie jak ponowne uruchomienie komputera, tymczasowa awaria zasilania lub przerwy w działaniu sieci. Program PowerShell próbuje zachować lub odzyskać stan PSSession do stanu Otwarte, jeśli sesja źródłowa jest nadal dostępna, lub stan rozłączenia, jeśli nie jest.

"Aktywne" PSSession to taki, który uruchamia polecenia. Jeśli sesja programu PSSession jest połączona (nie odłączona) i polecenia są uruchamiane w sesji PSSession po zamknięciu połączonej sesji, program PowerShell próbuje zachować sesję PSSession na komputerze zdalnym. Jeśli jednak żadne polecenia nie są uruchomione w sesji PSSession, program PowerShell zamyka sesję PSSession po zamknięciu połączonej sesji.

Aby uzyskać więcej informacji, zobacz about_Remote_Disconnected_Sessions.

Czy mogę uruchomić zadanie w tle w programie PSSession?

Tak. Zadanie w tle to polecenie uruchamiane asynchronicznie w tle bez interakcji z bieżącą sesją. Po przesłaniu polecenia w celu uruchomienia zadania polecenie zwraca obiekt zadania, ale zadanie jest nadal uruchamiane w tle, dopóki nie zostanie ukończone.

Aby uruchomić zadanie w tle na komputerze lokalnym, użyj Start-Job polecenia . Zadanie w tle można uruchomić w połączeniu tymczasowym (przy użyciu parametru ComputerName ) lub w sesji PSSession (przy użyciu parametru Sesja ).

Aby uruchomić zadanie w tle na komputerze zdalnym, użyj Invoke-Command polecenia cmdlet z parametrem AsJob lub użyj Invoke-Command polecenia cmdlet , aby uruchomić Start-Job polecenie na komputerze zdalnym. W przypadku korzystania z parametru AsJob można użyć parametrów ComputerName lub Session .

W przypadku używania Invoke-Command polecenia do uruchamiania Start-Job polecenia należy uruchomić polecenie w programie PSSession. Jeśli używasz parametru ComputerName , program PowerShell kończy połączenie po powrocie obiektu zadania, a zadanie zostanie przerwane.

Aby uzyskać więcej informacji, zobacz opis polecenia about_Jobs.

Czy mogę uruchomić sesję interaktywną?

Tak. Aby rozpocząć sesję interaktywną z komputerem zdalnym, użyj Enter-PSSession polecenia cmdlet . W sesji interakcyjnej polecenia, które są uruchamiane na komputerze zdalnym, tak jak w przypadku wpisywania ich bezpośrednio na komputerze zdalnym.

Sesję interaktywną można uruchomić w sesji tymczasowej (przy użyciu parametru ComputerName ) lub w sesji PSSession (przy użyciu parametru Sesja ). Jeśli używasz sesji PSSession, psSession zachowuje dane z poprzednich poleceń, a sesja PSSession zachowuje wszelkie dane wygenerowane podczas sesji interaktywnej do użycia w kolejnych poleceniach.

Po zakończeniu sesji interakcyjnej sesja programu PSSession pozostaje otwarta i będzie dostępna do użycia.

Aby uzyskać więcej informacji, zobacz Enter-PSSession i Exit-PSSession.

Czy muszę usunąć pliki PSSessions?

Tak. PsSession to proces, który jest autonomicznym środowiskiem, które używa pamięci i innych zasobów nawet wtedy, gdy nie jest używany. Po zakończeniu pracy z programem PSSession usuń go. Jeśli tworzysz wiele psSessions, zamknij te, których nie używasz, i zachowaj tylko te, które są obecnie używane.

Aby usunąć pliki PSSessions, użyj Remove-PSSession polecenia cmdlet . Usuwa pliki PSSessions i zwalnia wszystkie używane zasoby.

Możesz również użyć parametru IdleTimeOut parametru , New-PSSessionOption aby zamknąć bezczynność psSession po określonym interwale. Aby uzyskać więcej informacji, zobacz New-PSSessionOption.

Jeśli zapiszesz obiekt PSSession w zmiennej, a następnie usuniesz plik PSSession lub upłynął limit czasu, zmienna nadal zawiera obiekt PSSession, ale nie jest aktywna i nie można jej użyć ani naprawić.

Czy wszystkie sesje i sesje PSSessions są podobne?

Nie. Deweloperzy mogą tworzyć sesje niestandardowe, które obejmują tylko wybranych dostawców i polecenia cmdlet. Jeśli polecenie działa w jednej sesji, ale nie w innej, może to być spowodowane ograniczeniami sesji.

Zobacz też