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 "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 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 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 PowerShell. Każda sesja zawiera wystąpienie aparatu System.Management.Automation i programu 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 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 PowerShell. Program PowerShell tworzy sesje tymczasowe do uruchamiania poszczególnych poleceń. Można jednak również tworzyć sesje (nazywane "sesjami programu 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 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 sesji PSSession, program PowerShell ustanawia trwałą sesję na komputerze zdalnym, w którym można uruchamiać 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-EventLog
Get-Service
Get-Process
Używają one technologii innych niż komunikacja zdalna programu 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 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 na komputerach z systemem Windows 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.
Na komputerze z systemem Windows 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 PowerShell można zamknąć i zamknąć komputer źródłowy bez przerywania 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 w celu nawiązania połączenia z 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 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 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 PowerShell próbuje zachować lub odzyskać stan PSSession do stanu Otwarte, jeśli sesja źródłowa jest nadal dostępna, lub w stanie rozłączenia, jeśli 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 PowerShell próbuje zachować psSession na komputerze zdalnym. Jeśli jednak w programie PSSession nie są uruchomione żadne polecenia, 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 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.