Udostępnij za pośrednictwem


about_PSSession_Details

Krótki opis

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

Długi opis

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

W przeciwieństwie do sesji tworzonych przez program Windows 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 Windows PowerShell ustanawia trwałe połączenie z komputerem zdalnym w celu obsługi programu PSSession. Za pomocą programu PSSession można uruchamiać serię poleceń, funkcji i skryptów, które udostępniają dane.

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

Informacje o sesjach

Technicznie sesja jest środowiskiem wykonywania, w którym działa program Windows PowerShell. Każda sesja zawiera wystąpienie aparatu System.Management.Automation i program hosta, w którym działa program Windows PowerShell. Host może być znaną konsolą programu Windows PowerShell lub innym programem, który uruchamia polecenia, takie jak Cmd.exe, lub program utworzony do hostowania programu Windows PowerShell, takiego jak zintegrowane środowisko skryptów programu Windows PowerShell (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 skrytecie.

W sesji można uruchamiać tylko jedno polecenie (lub potok poleceń). 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 programach PSSessions

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

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

Jeśli jednak używasz New-PSSession polecenia cmdlet do utworzenia programu PSSession, program Windows PowerShell ustanawia trwałą sesję na komputerze zdalnym, w którym można uruchomić wiele poleceń lub sesji interakcyjnych. Utworzone pliki PSSessions pozostaną otwarte i będą dostępne do użycia do momentu ich usunięcia lub 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 ustanawia połączenie z komputera lokalnego do procesu na komputerze zdalnym. Podczas tworzenia 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ć zdalne polecenie.

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

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

Wiele innych poleceń cmdlet, które pobierają dane z komputerów zdalnych, takich jak , , i Get-WmiObject mają tylko parametr ComputerName. Get-EventLogGet-ServiceGet-Process Używają one technologii innych niż komunikacja zdalna programu Windows PowerShell w celu zdalnego zbierania danych. Te polecenia cmdlet nie mają parametru Sesja , ale można użyć Invoke-Command polecenia cmdlet, aby uruchomić te polecenia w sesji PSSession.

Jak utworzyć pssession?

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

Czy mogę utworzyć pssession na dowolnym komputerze?

Aby utworzyć serwer PSSession połączony z komputerem zdalnym, należy skonfigurować komputer do komunikacji zdalnej w programie Windows 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 programu Windows PowerShell 3.0, parametr Get-PSSession ComputerName polecenia cmdlet pobiera psSessions utworzone na określonych komputerach zdalnych.

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

Jeśli na przykład utworzysz serwer 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 pobrać 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 programie 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 pobrać tylko sesje PSSessions utworzone przez inne osoby i zarządzać nimi tylko wtedy, gdy możesz podać poświadczenia użytkownika, który utworzył pssession lub konfigurację sesji, której używa psSession, zawiera poświadczenia Uruchom jako. W przeciwnym razie możesz pobrać, nawiązać połączenie z utworzonymi usługami PSSession i zarządzać nimi oraz zarządzać nimi.

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

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

Możesz użyć Disconnect-PSSession polecenia cmdlet , aby odłączyć się od programu 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 Windows 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ć pssession i Connect-PSSession polecenie cmdlet, aby nawiązać połączenie z psSession z nowej sesji na innym komputerze.

Aby uzyskać więcej informacji, zobacz about_Remote_Disconnected_Sessions.

Co się stanie z moim pssession, jeśli mój komputer zatrzyma?

Odłą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 Windows PowerShell próbuje odzyskać aktywne pssesje, które są rozłączone przypadkowo, takie jak ponowne uruchomienie komputera, tymczasowa awaria zasilania lub zakłócenia sieci. Program Windows PowerShell próbuje zachować lub odzyskać stan PSSession do stanu Otwarte, jeśli sesja źródłowa jest nadal dostępna, lub do stanu rozłączonego, jeśli tak nie jest.

"Aktywne" PSSession to taki, który uruchamia polecenia. Jeśli program PSSession jest połączony (nie jest odłączony), a polecenia są uruchamiane w sesji PSSession po zamknięciu połączonej sesji, program Windows PowerShell próbuje zachować psSession na komputerze zdalnym. Jeśli jednak w programie PSSession nie są uruchomione żadne polecenia, program Windows 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 Windows PowerShell kończy połączenie po powrocie obiektu zadania i 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 programu PSSession, usługa PSSession zachowuje dane z poprzednich poleceń, a sesja PSSession zachowuje wszystkie 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ąć pssessions?

Tak. PsSession to proces, który jest własnym środowiskiem korzystającym z pamięci i innych zasobów, nawet jeśli nie używasz go. 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ąć usługi PSSessions, użyj Remove-PSSession polecenia cmdlet . Usuwa ona pliki PSSessions i zwalnia wszystkie używane zasoby.

Można również użyć parametru IdleTimeOut polecenia , 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 nie zezwolisz na przekroczenie limitu czasu, zmienna nadal zawiera obiekt PSSession, ale psSession nie jest aktywny i nie można go użyć ani naprawić.

Czy wszystkie sesje i sesje PSSessions są podobne?

L.p. 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ż