Enable-PSRemoting
Konfiguruje komputer do odbierania poleceń zdalnych.
Składnia
Enable-PSRemoting
[-Force]
[-SkipNetworkProfileCheck]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Ten cmdlet jest dostępny tylko na platformie Windows.
Polecenie cmdlet Enable-PSRemoting
konfiguruje komputer do odbierania poleceń zdalnych programu PowerShell wysyłanych przy użyciu technologii WS-Management. Program PowerShell do komunikacji zdalnej w wersji WS-Management jest obecnie obsługiwany tylko na platformie Windows.
Komunikacja zdalna programu PowerShell jest domyślnie włączona na platformach systemu Windows Server. Możesz użyć Enable-PSRemoting
do włączenia komunikacji zdalnej programu PowerShell w innych obsługiwanych wersjach systemu Windows oraz do ponownego włączenia tej komunikacji, jeśli zostanie wyłączona.
To polecenie należy uruchomić tylko raz na każdym komputerze, który odbiera polecenia. Nie musisz uruchamiać go na komputerach, które wysyłają tylko polecenia. Ponieważ konfiguracja uruchamia odbiorniki, rozsądne jest uruchomienie go tylko tam, gdzie jest to konieczne.
Włączenie komunikacji zdalnej programu PowerShell w wersjach klienckich systemu Windows, gdy komputer znajduje się w sieci publicznej, jest zwykle niedozwolone, ale można pominąć to ograniczenie przy użyciu parametru SkipNetworkProfileCheck. Aby uzyskać więcej informacji, zobacz opis parametru SkipNetworkProfileCheck.
Wiele instalacji programu PowerShell może istnieć obok siebie na jednym komputerze. Uruchomienie Enable-PSRemoting
spowoduje skonfigurowanie punktu końcowego zdalnej komunikacji dla określonej wersji instalacji, w której uruchamiasz polecenie cmdlet. Dlatego jeśli uruchomisz Enable-PSRemoting
podczas uruchamiania programu PowerShell 6.2, punkt końcowy komunikacji zdalnej zostanie skonfigurowany z uruchomionym programem PowerShell 6.2. Jeśli uruchomisz Enable-PSRemoting
podczas uruchamiania programu PowerShell 7-preview, punkt końcowy komunikacji zdalnej zostanie skonfigurowany z uruchomionym programem PowerShell 7-preview.
Enable-PSRemoting
tworzy dwie konfiguracje punktów końcowych zdalnych zgodnie z potrzebami. Jeśli konfiguracje punktu końcowego już istnieją, upewnia się po prostu, że są one włączone. Utworzone konfiguracje są identyczne, ale mają różne nazwy. Jedna z nich będzie mieć prostą nazwę odpowiadającą wersji programu PowerShell, która hostuje sesję. Druga nazwa konfiguracji zawiera bardziej szczegółowe informacje o wersji programu PowerShell, która hostuje sesję. Na przykład podczas uruchamiania Enable-PSRemoting
w programie PowerShell 6.2 uzyskasz dwa skonfigurowane punkty końcowe o nazwie PowerShell.6, PowerShell.6.2.2. Dzięki temu można utworzyć połączenie z najnowszą wersją hosta programu PowerShell 6 przy użyciu prostej nazwy programu PowerShell.6. Możesz też nawiązać połączenie z określoną wersją hosta programu PowerShell przy użyciu dłuższej nazwy programu PowerShell.6.2.2.
Aby użyć nowo włączonych punktów końcowych komunikacji zdalnej, należy określić je według nazwy za pomocą parametru ConfigurationName podczas tworzenia połączenia zdalnego przy użyciu poleceń cmdlet Invoke-Command
,New-PSSession
,Enter-PSSession
. Aby uzyskać więcej informacji, zobacz Przykład 4.
Polecenie cmdlet Enable-PSRemoting
wykonuje następujące operacje:
- Uruchamia polecenie cmdlet Set-WSManQuickConfig, które wykonuje następujące zadania:
- Uruchamia usługę WinRM.
- Ustawia typ uruchamiania w usłudze WinRM na Wartość Automatyczna.
- Tworzy odbiornik do akceptowania żądań na dowolnym adresie IP.
- Włącza wyjątek zapory dla komunikacji WS-Management.
- Tworzy konfiguracje punktów końcowych sesji o prostych i pełnych nazwach w razie potrzeby.
- Włącza wszystkie konfiguracje sesji.
- Zmienia deskryptor zabezpieczeń wszystkich konfiguracji sesji, aby zezwolić na dostęp zdalny.
- Uruchamia ponownie usługę WinRM, aby wprowadzić poprzednie zmiany w życie.
Aby uruchomić to polecenie cmdlet na platformie Windows, uruchom program PowerShell przy użyciu opcji Uruchom jako administrator. To polecenie cmdlet nie jest dostępne w wersjach programu PowerShell dla systemu Linux lub macOS.
Ostrożność
To polecenie cmdlet nie ma wpływu na konfiguracje zdalnego punktu końcowego utworzone przez program Windows PowerShell.
Dotyczy tylko punktów końcowych utworzonych za pomocą programu PowerShell w wersji 6 lub nowszej. Aby włączyć i wyłączyć punkty końcowe komunikacji zdalnej programu PowerShell, które są hostowane przez program Windows PowerShell, uruchom polecenie cmdlet Enable-PSRemoting
z poziomu sesji programu Windows PowerShell.
Aby uzyskać więcej informacji na temat korzystania ze zdalnego interfejsu programu PowerShell, zobacz następujące artykuły:
Przykłady
Przykład 1. Konfigurowanie komputera do odbierania poleceń zdalnych
To polecenie konfiguruje komputer do odbierania poleceń zdalnych.
Enable-PSRemoting
WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.
Przykład 2. Konfigurowanie komputera do odbierania poleceń zdalnych bez monitu o potwierdzenie
To polecenie konfiguruje komputer do odbierania poleceń zdalnych. Parametr Force tłumi monity użytkownika.
Enable-PSRemoting -Force
WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.
Przykład 3. Zezwalanie na dostęp zdalny na klientach
W tym przykładzie pokazano, jak zezwolić na dostęp zdalny z sieci publicznych w wersjach klienckich systemu operacyjnego Windows. Nazwa reguły zapory może być inna dla różnych wersji systemu Windows.
Użyj Get-NetFirewallRule
, aby wyświetlić listę reguł. Przed włączeniem reguły zapory wyświetl ustawienia zabezpieczeń w regule, aby sprawdzić, czy konfiguracja jest odpowiednia dla danego środowiska.
Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property Name
Name
----
WINRM-HTTP-In-TCP-NoScope
WINRM-HTTP-In-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Domyślnie Enable-PSRemoting
tworzy reguły sieciowe zezwalające na dostęp zdalny z sieci prywatnych i domenowych. Polecenie używa parametru SkipNetworkProfileCheck, aby zezwolić na dostęp zdalny z sieci publicznych w tej samej podsieci lokalnej. Polecenie określa parametr Force w celu ominięcia komunikatów potwierdzenia.
Parametr SkipNetworkProfileCheck nie ma wpływu na wersje serwera systemu operacyjnego Windows, które domyślnie zezwalają na dostęp zdalny z sieci publicznych w tej samej podsieci lokalnej.
Polecenie cmdlet Set-NetFirewallRule
w module NetSecurity dodaje regułę zapory, która umożliwia zdalny dostęp z sieci publicznych z dowolnej lokalizacji zdalnej. Obejmuje to lokalizacje w różnych podsieciach.
Przykład 4. Tworzenie sesji zdalnej do nowo włączonej konfiguracji punktu końcowego
W tym przykładzie przedstawiono, jak włączyć zdalny dostęp programu PowerShell na komputerze, znaleźć skonfigurowane nazwy punktów końcowych i utworzyć sesję zdalną do jednego z tych punktów.
Pierwsze polecenie włącza zdalne zarządzanie PowerShell na komputerze.
Drugie polecenie zawiera listę konfiguracji punktu końcowego.
Trzecie polecenie tworzy zdalną sesję programu PowerShell na tej samej maszynie, określając punkt końcowy programu PowerShell.7 według nazwy. Sesja zdalna będzie hostowana przy użyciu najnowszej wersji programu PowerShell 7 (7.3.0).
Ostatnie polecenie uzyskuje dostęp do zmiennej $PSVersionTable
w sesji zdalnej, aby wyświetlić wersję programu PowerShell, która hostuje sesję.
Enable-PSRemoting -Force
Get-PSSessionConfiguration
$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }
WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.
Name : PowerShell.7
PSVersion : 7.3
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed,
BUILTIN\Remote Management Users AccessAllowed
Name : PowerShell.7.3.0
PSVersion : 7.3
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed,
BUILTIN\Remote Management Users AccessAllowed
Name Value
---- -----
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSEdition Core
PSRemotingProtocolVersion 2.3
Platform Win32NT
SerializationVersion 1.1.0.1
GitCommitId 6.2.2
WSManStackVersion 3.0
PSVersion 6.2.2
OS Microsoft Windows 10.0.18363
Notatka
Nazwa reguły zapory może być różna w zależności od wersji systemu Windows. Użyj polecenia cmdlet Get-NetFirewallRule
, aby wyświetlić listę nazw reguł w systemie.
Parametry
-Confirm
Prosi o potwierdzenie przed uruchomieniem polecenia cmdlet.
Typ: | SwitchParameter |
Aliasy: | cf |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Force
Wymusza uruchomienie polecenia bez monitowania o potwierdzenie użytkownika.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-SkipNetworkProfileCheck
Wskazuje, że to polecenie cmdlet umożliwia zdalną komunikację na wersjach klienckich systemu operacyjnego Windows, gdy komputer znajduje się w sieci publicznej. Ten parametr umożliwia regułę zapory dla sieci publicznych, która zezwala na dostęp zdalny tylko z komputerów w tej samej podsieci lokalnej.
Ten parametr nie ma wpływu na wersje serwera systemu operacyjnego Windows, które domyślnie mają regułę zapory podsieci lokalnej dla sieci publicznych. Jeśli reguła zapory podsieci lokalnej jest wyłączona w wersji serwera, Enable-PSRemoting
ją ponownie włącza, niezależnie od wartości tego parametru.
Aby usunąć ograniczenie podsieci lokalnej i włączyć dostęp zdalny ze wszystkich lokalizacji w sieciach publicznych, użyj polecenia cmdlet Set-NetFirewallRule
w module NetSecurity.
Ten parametr został wprowadzony w programie PowerShell 3.0.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie zostało uruchomione.
Typ: | SwitchParameter |
Aliasy: | wi |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
None
Nie można przesyłać obiektów do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet zwraca ciągi, które opisują jego wyniki.
Uwagi
Polecenie cmdlet jest dostępne tylko na platformach Windows.
W wersjach serwera systemu operacyjnego Windows Enable-PSRemoting
tworzy reguły zapory dla sieci prywatnych i domen, które zezwalają na dostęp zdalny, i tworzy regułę zapory dla sieci publicznych, która zezwala na dostęp zdalny tylko z komputerów w tej samej podsieci lokalnej.
W wersjach klienckich systemu operacyjnego Windows Enable-PSRemoting
tworzy reguły zapory dla sieci prywatnych i domen, które zezwalają na nieograniczony dostęp zdalny. Aby utworzyć regułę zapory dla sieci publicznych, które zezwalają na dostęp zdalny z tej samej podsieci lokalnej, użyj parametru SkipNetworkProfileCheck.
W wersji klienta lub serwera systemu operacyjnego Windows, aby utworzyć regułę zapory dla sieci publicznych, która usuwa ograniczenie podsieci lokalnej i zezwala na dostęp zdalny, użyj polecenia cmdlet Set-NetFirewallRule
w module NetSecurity, aby uruchomić następujące polecenie: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Enable-PSRemoting
włącza wszystkie konfiguracje sesji poprzez ustawienie wartości właściwości Włączone dla wszystkich konfiguracji sesji na $True
.
Enable-PSRemoting
usuwa ustawienia Deny_All i Network_Deny_All. Zapewnia to zdalny dostęp do konfiguracji sesji, które zostały zarezerwowane do użytku lokalnego.