Zarządzanie zdalnymi komputerami za pomocą PowerShell: Uruchamianie poleceń na zdalnych komputerach
Zarządzanie zdalnymi komputerami za pomocą PowerShell: Uruchamianie poleceń na zdalnych komputerach
PowerShell to niezwykle potężne narzędzie do zarządzania systemami Windows, które pozwala na automatyzację wielu zadań, w tym również zarządzania komputerami w sieci. Jednym z najbardziej zaawansowanych zastosowań PowerShell jest zarządzanie zdalnymi komputerami, czyli uruchamianie poleceń i skryptów na komputerach znajdujących się poza lokalnym środowiskiem. Dzięki temu administratorzy mogą zarządzać wieloma komputerami jednocześnie, bez potrzeby fizycznego dostępu do urządzeń. W tym artykule pokażemy, jak skonfigurować i wykorzystać PowerShell do zarządzania zdalnymi komputerami, uruchamiając polecenia na odległość.
Co to jest zdalne zarządzanie w PowerShell?
Zdalne zarządzanie w PowerShell umożliwia administratorom IT uruchamianie poleceń na innych komputerach w sieci lokalnej lub w chmurze. Dzięki PowerShell Remoting można wykonywać różnorodne zadania na komputerach, takie jak instalowanie oprogramowania, aktualizowanie systemów, monitorowanie zasobów czy konfiguracja systemów, bez konieczności fizycznej obecności przy tych urządzeniach. PowerShell oferuje szereg cmdletów i funkcji, które wspierają zdalne wykonywanie skryptów i poleceń na zdalnych maszynach.
Jak działa zdalne zarządzanie w PowerShell?
Zdalne zarządzanie za pomocą PowerShell opiera się na dwóch kluczowych komponentach:
- PowerShell Remoting (PS Remoting) – usługa umożliwiająca wykonywanie poleceń na zdalnych komputerach. PS Remoting działa w oparciu o protokół WinRM (Windows Remote Management), który jest odpowiednikiem popularnego protokołu SSH w systemach Linux. Aby móc korzystać z PS Remoting, na komputerze docelowym musi być aktywowany i odpowiednio skonfigurowany WinRM.
- Cmdlety PowerShell – takie jak Invoke-Command, Enter-PSSession, New-PSSession, które pozwalają na uruchamianie zdalnych poleceń, tworzenie sesji zdalnych oraz utrzymywanie aktywnych połączeń z komputerami w sieci.

Jak skonfigurować zdalne zarządzanie PowerShell?
Aby skutecznie korzystać z PowerShell do zarządzania zdalnymi komputerami, należy przejść przez kilka kroków konfiguracji zarówno po stronie komputerów lokalnych, jak i zdalnych.
Krok 1: Włączenie usługi WinRM na komputerze zdalnym
Aby umożliwić zdalne zarządzanie PowerShell, na komputerze docelowym musi być uruchomiona usługa Windows Remote Management (WinRM). Można to zrobić na dwa sposoby – ręcznie lub za pomocą PowerShell.
Włączenie WinRM ręcznie:
- Otwórz PowerShell jako administrator na komputerze docelowym.
- Wpisz poniższe polecenie, aby włączyć WinRM:
Enable-PSRemoting -Force
To polecenie aktywuje WinRM, skonfiguruje zaporę, aby zezwolić na połączenia zdalne oraz uruchomi usługę WinRM.
Krok 2: Ustawienie zasad zdalnego połączenia w domenie
Jeśli komputer jest częścią domeny, upewnij się, że polityka zdalnego połączenia pozwala na połączenia z innych maszyn. Możesz to zrobić za pomocą poniższego polecenia PowerShell:
Set-Item wsman:\localhost\client\trustedhosts -Value "*" -Force
Polecenie to dodaje wszystkie komputery do listy zaufanych hostów, co pozwala na połączenia zdalne z komputerów, które nie znajdują się w tej samej domenie.
Krok 3: Testowanie połączenia zdalnego
Po włączeniu i skonfigurowaniu usługi WinRM na komputerze docelowym, możesz sprawdzić, czy połączenie działa poprawnie. Z lokalnej maszyny uruchom poniższe polecenie, aby sprawdzić, czy zdalny komputer jest dostępny przez PowerShell Remoting:
Test-WSMan -ComputerName "nazwa_komputera_zdalnego"
Jeśli wszystko jest skonfigurowane poprawnie, otrzymasz odpowiedź potwierdzającą działające połączenie.
Uruchamianie poleceń na zdalnych komputerach za pomocą PowerShell
Po skonfigurowaniu PowerShell Remoting, możesz zacząć zarządzać komputerami zdalnymi za pomocą kilku cmdletów.
1. Invoke-Command
Cmdlet Invoke-Command umożliwia uruchamianie poleceń na jednym lub wielu komputerach zdalnych. Polecenie to pozwala na wykonanie skryptu PowerShell na wielu komputerach jednocześnie.
Przykład uruchomienia polecenia na zdalnym komputerze:
Invoke-Command -ComputerName "nazwa_komputera_zdalnego" -ScriptBlock {
Get-Process
}
Powyższe polecenie uruchamia polecenie Get-Process na komputerze zdalnym i zwraca listę uruchomionych procesów.
2. Enter-PSSession
Cmdlet Enter-PSSession tworzy interaktywną sesję PowerShell z komputerem zdalnym, co umożliwia wprowadzanie poleceń w trybie interaktywnym. Jest to przydatne, jeśli chcesz pracować bezpośrednio na zdalnym systemie.
Przykład uruchomienia sesji interaktywnej:
Enter-PSSession -ComputerName "nazwa_komputera_zdalnego"
Po nawiązaniu połączenia, wprowadź polecenia tak, jakbyś pracował lokalnie na tym komputerze. Aby zakończyć sesję, wpisz Exit-PSSession.
3. New-PSSession
Cmdlet New-PSSession pozwala na tworzenie i zarządzanie długoterminowymi połączeniami zdalnymi. Umożliwia to zachowanie sesji na dłuższy okres, co jest wygodne, gdy musisz wykonywać wiele operacji na tym samym komputerze zdalnym.
Przykład tworzenia sesji:
$session = New-PSSession -ComputerName "nazwa_komputera_zdalnego"
Po utworzeniu sesji, możesz wykonywać polecenia na tym komputerze za pomocą Invoke-Command z sesji:
Invoke-Command -Session $session -ScriptBlock { Get-EventLog -LogName System }
Aby zakończyć sesję, użyj:
Remove-PSSession -Session $session
Zabezpieczenia przy korzystaniu z PowerShell Remoting
Zdalne zarządzanie PowerShell wiąże się z pewnymi ryzykami związanymi z bezpieczeństwem, dlatego warto zastosować dodatkowe środki ostrożności:
- Używanie połączeń szyfrowanych (HTTPS) – domyślnie PS Remoting używa protokołu HTTP, który nie jest szyfrowany. Można skonfigurować WinRM do używania HTTPS, co zapewni bezpieczne połączenie.
- Autoryzacja użytkowników – upewnij się, że odpowiednie zasady zabezpieczeń są skonfigurowane, aby tylko uprawnieni użytkownicy mogli wykonywać zdalne polecenia.
- Firewall i zapory – sprawdź, czy zapora systemowa pozwala na połączenia zdalne przy użyciu portu 5985 (HTTP) lub 5986 (HTTPS).
Podsumowanie
Zdalne zarządzanie komputerami za pomocą PowerShell jest bardzo efektywnym narzędziem, które pozwala administratorom na wykonywanie operacji na wielu maszynach jednocześnie, bez konieczności fizycznej interakcji z komputerami. Dzięki PowerShell Remoting, cmdletom takim jak Invoke-Command, Enter-PSSession i New-PSSession, można zarządzać komputerami w sieci, uruchamiać polecenia i skrypty, co znacząco ułatwia administrację systemami Windows 11 i innymi wersjami Windows.