Zdalne administrowanie serwerem za pomocą programu Windows PowerShell
- 7 min
Pracownicy administracji IT firmy Contoso coraz częściej koncentrują się na wykonywaniu zadań administracyjnych zdalnie z obiektu, którymi zarządza. Jednym z szczególnych zainteresowań jest możliwość zdalnego administrowania infrastrukturą IT firmy Contoso i zarządzania nią za pomocą programu Windows PowerShell. Aby to osiągnąć, możesz użyć komunikacji zdalnej programu Windows PowerShell.
Wymagania dotyczące komunikacji wirtualnej
Komunikacja zdalna wymaga programu Windows PowerShell na komputerze lokalnym, a zdalne zarządzanie systemem Windows włączone na dowolnych komputerach zdalnych, z którymi chcesz nawiązać połączenie. Należy również włączyć zdalne komunikacja zdalna programu Windows PowerShell.
Uwaga
Komunikacja zdalna programu Windows PowerShell jest domyślnie włączona w systemie Windows Server, ale należy ją włączyć w systemach Windows 10 i Windows 11.
Aby włączyć komunikacji zdalnej programu Windows PowerShell, należy użyć jednej z poniższych procedur. W wierszu polecenia z podwyższonym poziomem uprawnień (lub wierszu polecenia programu Windows PowerShell (administrator) uruchom następujące polecenie:
Winrm quickconfig
Alternatywnie w celu włączenia komunikacji zdalnej można użyć następującego polecenia cmdlet programu Windows PowerShell:
Enable-PSremoting -force
Ważne
Zdalne zarządzanie systemem Windows komunikuje się za pośrednictwem protokołu HTTP. Domyślnie zdalne zarządzanie systemem Windows i komunikacja zdalna programu Windows PowerShell używają portu TCP 5985 dla przychodzących niezaszyfrowanych połączeń i portu TCP 5986 dla połączeń szyfrowanych przychodzących.
Uwaga
Aplikacje korzystające z zdalnego zarządzania systemem Windows , takie jak Program Windows PowerShell, mogą również stosować własne szyfrowanie do danych przekazywanych do usługi zdalnego zarządzania systemem Windows.
Wszystkie pliki i inne zasoby niezbędne do uruchomienia określonego polecenia muszą znajdować się na komputerze zdalnym, ponieważ polecenia komunikacji zdalnej nie kopiują żadnych zasobów. Można jednak uruchamiać skrypty lokalne. Dzieje się tak, ponieważ zawartość skryptu jest wysyłana do komputera zdalnego, a nie do samego pliku skryptu.
Aby wykonywać administrację zdalną, administratorzy muszą mieć uprawnienia do:
- Nawiązywanie połączenia z komputerem zdalnym
- Uruchamianie programu Windows PowerShell
- Uzyskiwanie dostępu do magazynów danych i rejestru na komputerze zdalnym
Uwaga
Włączenie komunikacji wirtualnej na komputerach przy użyciu karty interfejsu sieciowego przypisanej do profilu lokalizacji sieci publicznej generuje błąd. Możesz użyć Enable-PSremoting -force polecenia , aby pominąć to ograniczenie i wymusić komunikacji wirtualnej na urządzeniu z publiczną kartą sieciową.
Uruchamianie poleceń cmdlet na komputerach zdalnych
Kilka poleceń cmdlet ma parametr ComputerName , który umożliwia pobieranie obiektów z komputerów zdalnych. Te polecenia cmdlet nie używają komunikacji zdalnej programu Windows PowerShell, więc można użyć parametru ComputerName w tych poleceniach cmdlet na dowolnym komputerze z uruchomionym programem Windows PowerShell. Nie musisz konfigurować komputerów na potrzeby komunikacji zdalnej programu Windows PowerShell ani spełniać wymagań systemowych dotyczących komunikacji zdalnej.
Poniższa tabela zawiera więcej informacji o parametrze ComputerName.
| Polecenie | Opis |
|---|---|
Get-Command –ParameterName ComputerName |
Znajduje polecenia cmdlet używające parametru ComputerName. |
Get-Help <cmdlet-name> -parameter ComputerName |
Ustal, czy parametr ComputerName wymaga komunikacji zdalnej programu Windows PowerShell. |
Przetwarzanie poleceń zdalnych
Po nawiązaniu połączenia z komputerem zdalnym i wysłaniu go zdalnego polecenia polecenie jest przesyłane przez sieć do wystąpienia programu Windows PowerShell na komputerze zdalnym, a następnie uruchamiane na nim. Wyniki polecenia są wysyłane z powrotem do komputera lokalnego i wyświetlane w sesji programu Windows PowerShell na komputerze lokalnym.
Wszystkie lokalne dane wejściowe do zdalnego polecenia są zbierane przed wysłaniem któregokolwiek z tych danych do komputera zdalnego. Jednak dane wyjściowe są zwracane do komputera lokalnego w miarę jego generowania. Podczas nawiązywania połączenia z komputerem zdalnym system używa poświadczeń nazwy użytkownika i hasła na komputerze lokalnym w celu uwierzytelnienia użytkownika na komputerze zdalnym.
Uwaga
Domyślnie protokół uwierzytelniania Kerberos w wersji 5 (V5) jest używany do przeprowadzania autoryzacji i uwierzytelniania. W związku z tym wymagana jest domena usług AD DS.
Napiwek
W sytuacjach, gdy komputer zdalny nie znajduje się w domenie lub znajduje się w niezaufanej domenie, można zezwolić komputerowi klienckim na nawiązywanie połączenia przez zdefiniowanie komputerów zdalnych jako zaufanych hostów.
Następujące polecenia cmdlet obsługują komunikacja zdalną.
Invoke-CommandEnter-PSSessionExit-PSSessionDisconnect-PSSessionReceive-PSSessionConnect-PSSession
Napiwek
Karty zdalne można tworzyć przy użyciu środowiska Windows PowerShell ISE. Aby wykonać to zadanie, użyj opcji Nowa zdalna karta programu PowerShell z menu Plik w środowisku Windows PowerShell ISE.
Podczas implementowania komunikacji zdalnej można nawiązać połączenie z maszynami zdalnymi przy użyciu sesji tymczasowej lub utworzyć sesję trwałą.
Tworzenie sesji tymczasowej
W przypadku sesji tymczasowej należy uruchomić sesję, uruchomić polecenia, a następnie zakończyć sesję. Jest to efektywna metoda uruchamiania jednego polecenia lub kilku niepowiązanych poleceń, nawet na dużej liczbie komputerów zdalnych.
Uwaga
Zmienne lub funkcje zdefiniowane w poleceniach nie są już dostępne po zamknięciu połączenia.
Aby utworzyć połączenie tymczasowe, użyj Invoke-Command polecenia cmdlet z parametrem –ComputerName , aby określić komputery zdalne. Następnie użyj parametru –ScriptBlock , aby określić polecenie. Na przykład następujące polecenie jest uruchamiane Get-EventLog na komputerze SEA-DC1:
Invoke-Command –ComputerName SEA-DC1 –ScriptBlock {Get-EventLog –log system}
Tworzenie sesji trwałej
Aby utworzyć trwałe połączenie z innym komputerem, użyj New-PSSession polecenia cmdlet . Na przykład następujące polecenie tworzy sesję na komputerze zdalnym i zapisuje sesję w zmiennej $s:
$s = New-PSSession –ComputerName SEA-DC1
Enter-PSSession Użyj polecenia cmdlet , aby nawiązać połączenie i uruchomić sesję interaktywną. Na przykład po otwarciu nowej sesji na SEA-DC1 następujące polecenie uruchamia interaktywną sesję z komputerem:
Enter-PSSession $s
Po wprowadzeniu sesji wiersz polecenia programu Windows PowerShell na komputerze lokalnym zmieni się, aby wskazać połączenie.
Sesja interaktywna pozostaje otwarta do momentu jego zamknięcia. Dzięki temu można uruchamiać dowolną liczbę poleceń. Aby zakończyć sesję interaktywną, wprowadź następujące polecenie:
Exit-PSSession
Uruchamianie poleceń zdalnych na wielu komputerach
W przypadku sesji Invoke-Command tymczasowych polecenie cmdlet akceptuje wiele nazw komputerów. W przypadku połączeń trwałych parametr Sesja akceptuje wiele sesji programu Windows PowerShell. Aby uruchomić zdalne polecenie na wielu komputerach, uwzględnij wszystkie nazwy komputerów w parametrze ComputerName za pomocą Invoke-Command polecenia cmdlet i rozdziel nazwy przecinkami, jak pokazano w poniższym przykładzie:
Invoke-Command -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2 -ScriptBlock {Get-Culture}
W przypadku sesji trwałych można również uruchomić polecenie w wielu sesjach programu Windows PowerShell. Następujące polecenia umożliwiają tworzenie sesji programu Windows PowerShell na platformie SEA-DC1, SEA-SVR1 i SEA-SVR2, a następnie uruchomienie Get-Culture polecenia w każdej sesji programu Windows PowerShell:
$s = New-PSSession -ComputerName SEA-DC1, SEA-SVR1, SEA-SVR2
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Napiwek
Aby dołączyć komputer lokalny na liście komputerów, wprowadź nazwę komputera lokalnego lub kropkę (.) lub localhost.
Jak uruchomić skrypt na komputerach zdalnych
Aby uruchomić skrypt lokalny na komputerach zdalnych, użyj parametru FilePath z .Invoke-Command Następujące polecenie uruchamia skrypt Sample.ps1 na komputerach SEA-DC1 i SEA-SVR1:
Invoke-Command -ComputerName SEA-DC1, SEA-SVR1 –FilePath C:\Test\Sample.ps1
Wyniki skryptu są zwracane na komputer lokalny. Korzystając z parametru FilePath , nie trzeba kopiować żadnych plików na komputery zdalne.
Pokaz
W poniższym filmie wideo pokazano, jak zarządzać zdalnym systemem Windows Server przy użyciu programu Windows PowerShell. Główne kroki procesu to:
Uruchom wiersz polecenia programu PowerShell z podwyższonym poziomem uprawnień.
Utwórz sesję komunikacji zdalnej programu PowerShell, uruchamiając następujące polecenie:
Enter-PSSession -ComputerName SEA-DC1Pobierz informacje o serwerze, takie jak nazwa i adres IP, przy użyciu standardowych poleceń cmdlet programu Windows PowerShell.
Sprawdź stan usługi IIS i uruchom ponownie usługę przy użyciu następującego polecenia:
Get-Service -Name IISAdmin | Restart-Service