Zdalne połaczenie z serwerem pocztowym Exchange przy użyciu konsoli PowerShell

Poza klasyczną metodą zarządzania serwerem pocztowym polegającą na zalogowaniu się bezpośrednio na serwer przy użyciu pulpitu zdalnego, administrator może skorzystać z zainstalowania graficznych narzędzi administracyjnych na swoim komputerze.
Trzecią metodą jest zarządzanie serwerem pocztowym Exchange przy użyciu zdalnej sesji PowerShell zestawionej ze środowiskiem Exchange Management Shell zainstalowanym domyślnie na serwerze pocztowym. Jedynym wymogiem jest, aby na stacji roboczej zainstalowany był Microsoft .NET Framework 4.5.2 lub nowszy.
Możliwe jest to dzięki zdalnej powłoce PowerShell, która wykorzystywana jest zarówno w przypadku instancji lokalnych, jak i działających w chmurze. Zdalna natura powłoki PowerShell umożliwia także zdalne zarządzanie serwerem Exchange z poziomu stacji roboczej lub serwera, na którym nie zostały zainstalowane narzędzia do zarządzania programem Exchange.
Zdalne połączenia powłoki PowerShell z serwerami Exchange 2016 nawiązują połączenie niemal identycznie, jak w przypadku Exchange 2013. Technika ta nosi nazwę niejawnej komunikacji zdalnej i umożliwia importowanie zdalnych poleceń do lokalnej sesji powłoki w postaci funkcji proxy. Dzięki temu można korzystać z cmdletów powłoki Exchange PowerShell, zainstalowanych na serwerze Exchange tak jakby znajdowały się w loklanej powłoce PowerShell.
Głównym czynnikiem, dla którego zawsze używana jest zdalna powłoka PowerShell, nawet podczas pracy bezpośrednio na serwerze Exchange z zainstalowanymi narzędziami do zarządzania są uprawnienia. Model uprawnień w programie Exchange 2010, 2013 i 2016 został całkowicie przebudowany i obecnie wykorzystuje funkcję zwaną kontrolą dostępu opartą rolach (Role Based Access Control - RBAC), która określa, co administratorzy mogą robić, a czego nie. Podczas tworzenia zdalnego połączenia powłoki PowerSchell z serwerem Exchange 2016 to moduł autoryzacyjny w usłudze IIS określa, do których cmdletów i ich parametrów użytkownik ma dostęp. Po uzyskaniu tej informacji jedynie cmdlety i parametry przydzielone do konta użytkownika poprzez rolę RBAC zostaną wczytane do sesji powłoki PowerShell z wykorzystaniem niejawnej komunikacji zdalnej.

Połączenie z serwerem pocztowym w postacji sesji zdalnej PowerShell nawiązujemy poleceniem: New-PSSession -Name Exchange -ConfigurationName Microsoft.Exchange -ConnectionUri http://ServerFQDN/PowerShell/ -Authentication Kerberos -Credential msa\administrator, gdzie:
- Name: wartość parametru może być dowolna. Służy ona do określenia przyjaznej nazwy połączenia.
- ConnectionUri: pełna ścieżka DNS serwera pocztowego w wewnętrznej przestrzeni nazw DNS np: http://exch1.msa.domena.pl/PowerShell/ .
- Credential: login administratora serwera pocztowego. Konto użytkownika użyte do połączenia musi mieć przypisaną przynajmniej jedną rolę umożliwiającą   zarządzanie środowiskiem Exchange.

Po zestawieniu tak skonfigurowanej sesji należy nawiązać z nią połączenie poleceniem: Enter-PSSession -Name Exchange. Połączenie pozwala na wykonywanie poleceń PowerShell bezpośrednio na serwerze pocztowym. Niestety ta metoda pozbawia użytkownika np. dostępu do podpowiedzi podczas wpisywania poleceń.
Lepszym rozwiązaniem jest ustawienie sesji i jej import na komputer lokalny. Wszystkie polecenia udostępnione przez środowisko Exchange Management Shell zostaną zaimportowane do lokalnej sesji powłoki w postaci specjalnych fukcji proxy. Funkcje te reprezentują skomplikowane cmdlety, które są w rzeczywistości zainstalowane na serwerze Exchange. Podczas ich uruchamiania wszystkie dane wymagane przez parametry są transferowane przez połączenie zdalne z komputera lokalnego na serwer. Następnie polecenie jest wykonywane na serwerze.
W celu utworzenia i zapisania sesji PowerShell wykonujemy polecenie: $Session=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ServerFQDN/PowerShell/ -Authentication Kerberos -Credential msa\administrator. Następnie konfiguracja sesji zostaje zaimportowana do lokalnej powłoki PowerShell: Import-PSSession $Session -DisableNameChecking -AllowClobber. Od tej pory polecenia środowiska Exchange Management Shell będą dostępne z poziomu lokalnej konsoli PowerShell. Po zakończeniu prac administracyjnych należy usunąć sesję: Remove-PSSession $Session.

Dodatkowe informacje:
- Microsoft Docs: New-PSSession.
- Microsoft Docs: Import-PSSession.
- Microsoft Docs: Exchange Server PowerShell (Exchange Management Shell).