PowerShell 3: Ulepszony remoting (1).

PowerShell remoting to funkcja, która pojawiła się wraz z premierą PowerShella w wersji 2. Wersja 3 przynosi znaczne zmiany w jej działaniu, dzięki którym z całą pewnością łatwiej będzie z niej korzystać: zarówno na poziomie konfiguracji, jak i późniejszego użytkowania. W tym poście skupię się na zmianach funkcjonalnych: jak zmieniły się możliwości remotingu w PowerShellu.

A kto umarł…

Remoting w poprzedniej wersji był mało odporny na przerwy w działaniu sieci: przerwa taka mogła skutkować tym, że traciliśmy połączenie ze zdalnym serwerem lub wyniki wykonywanego ostatnio polecenia. W nowej wersji sytuacja zmieniła się: PowerShell będzie z jednej strony podtrzymywał sesję, z drugiej zaś – próbować będzie na nowo się połączyć. Czasu mamy i dużo, i mało. Puszczam oczko 3-4 minuty miną, zanim nasza sesja “umrze” śmiercią naturalną. Oczywiście, nie musimy domyślać się, że coś niedobrego się dzieje: prezentacja zależeć będzie od wykorzystywanego przez nas hosta, np. ISE o problemie informuje wyłącznie przy pomocy komunikatów “WARNING”:

PowerShell-remoting-Reconnecting-Session

Widać tu wyraźnie, że operacja w trakcie braku sieci nadal była wykonywana, tylko jej wynik zwrócony został dopiero po odzyskaniu połączenia. A co jeśli połączenie chcemy zerwać świadomie, na nieco dłużej nić kilka minut? Również to jest możliwe.

PowerShell screen

Gdy łączę się zdalnie przy pomocy SSH z dowolnym hostem opartym o *nixy, to jeśli tylko mam taką możliwość – od razu startuję screen. Dzięki temu nie muszę się w ogóle martwić tym, czy sieć mi padnie, albo przypadkiem zamknę okno z klientem SSH. Tego poziomu wygody w PowerShellu 3 jeszcze nie uzyskamy (nadal zamknięcie okna może być ryzykowne) ale przynajmniej są pewne zwiastuny zmian w dobrym kierunku. Sesje bowiem są od tej wersji zapisywane po stronie maszyny, z którą się łączymy. Daje nam to dużą elastyczność: istniejącą sesję możemy rozłączyć, a następnie połączyć się z nią ponownie. Sesję “uruchamiającą” możemy spokojnie zamknąć, komputer wyłączyć a połączenie odtworzyć na zupełnie innym urządzeniu. Ważne jest, że działa to tylko z sesjami utworzonymi przez New-PSSession. Nie da się tego zrobić z tymczasową sesją stworzoną przy pomocy Enter-PSSession –ComputerName MojSerwer.

Spójrzmy jak to działa. Najpierw tworzymy “imienną” sesję i łączymy się z nią:

New-PSSession -ComputerName 192.168.100.202 -Name Test            
Enter-PSSession -Name Test            

Gdy z jakiegoś powodu zechcemy się z sesją rozłączyć, wychodzimy z niej i rozłączamy:

Disconnect-PSSession -Name Test            

Później z dowolnego komputera (oczywiście, z zainstalowanym PowerShellem 3) możemy się z taką końcówką połączyć i kontynuować pracę:

Get-PSSession -ComputerName 192.168.100.202            
Connect-PSSession -ComputerName 192.168.100.202 -Name Test            
Enter-PSSession -Name Test

Ważne jest, by prawidłowo intepretować stan oraz dostępność sesji i wiedzieć, gdzie jej szukać. Get-PSSession zwróci bowiem “lokalne” sesje tylko wtedy, gdy nie podamy nic w parametrze ComputerName. Jeśli podamy nazwę komputera – wyświetlone zostaną tylko sesje, które są z tym komputerem połączone. Get-PSSession –ComputerName . wyświetli więc tylko sesje (utworzone przy pomocy naszych poświadczeń) na naszym komputerze. Stan pozwala ustalić czy dana sesja jest otwarta, rozłączona czy też uszkodzona. Dostępność pozwala ustalić czy wybrana sesja nie jest przypadkiem “podpięta” do innej sesji. Dobrze więc dla nas gdy jest ‘Available’ bądź ‘None’, gorzej gdy jest ‘Busy’.

PowerShell-Remoting-Disconnected-Busy-None

Warto też wspomnieć, że taka sesja domyślnie czekać na nas będzie 2 godziny. Co jeśli chcemy czas ten wydłużyć? Sposobów zmiany domyślnych ustawień jest kilka, ale chyba najprostszy to podanie odpowiedniej wartości podczas rozłączania sesji:

Disconnect-PSSession -Name Test -IdleTimeoutSec (3600 * 24) |             
    Format-Table -AutoSize Name, State, IdleTimeout

I tym optymistycznym akcentem kończę tego posta. Choć przyznać trzeba, że jeszcze sporo informacji przed nami, nawet tematu korzystania z remotingu nie udało mi się dziś wyczerpać… Uśmiech

~ - autor: Bartek Bielawski w dniu Luty 4, 2013.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

 
%d blogerów lubi to: