Enable-PSRemoting

Konfiguruje komputer do odbierania poleceń zdalnych.

Składnia

Enable-PSRemoting
      [-Force]
      [-SkipNetworkProfileCheck]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Opis

To polecenie cmdlet jest dostępne tylko na platformie Windows.

Polecenie Enable-PSRemoting cmdlet konfiguruje komputer do odbierania poleceń zdalnych programu PowerShell wysyłanych przy użyciu technologii WS-Management. WS-Management oparte na komunikacji zdalnej programu PowerShell jest obecnie obsługiwane tylko na platformie Windows.

Komunikacja zdalna programu PowerShell jest domyślnie włączona na platformach systemu Windows Server. Możesz użyć Enable-PSRemoting polecenia w celu włączenia komunikacji zdalnej programu PowerShell w innych obsługiwanych wersjach systemu Windows i ponownego włączenia komunikacji zdalnej, jeśli zostanie ona wyłączona.

To polecenie należy uruchomić tylko raz na każdym komputerze, który będzie otrzymywać polecenia. Nie trzeba go uruchamiać na komputerach, które wysyłają tylko polecenia. Ponieważ konfiguracja uruchamia odbiorniki do akceptowania połączeń zdalnych, należy uruchomić je tylko wtedy, gdy 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 komunikacji wirtualnej dla określonej wersji instalacji, w której uruchomiono polecenie cmdlet. Dlatego w przypadku uruchamiania programu Enable-PSRemoting PowerShell 6.2 zostanie skonfigurowany punkt końcowy komunikacji zdalnej z programem PowerShell 6.2. Jeśli uruchamiasz program Enable-PSRemoting PowerShell 7-preview, zostanie skonfigurowany punkt końcowy komunikacji zdalnej z programem PowerShell 7-preview.

Enable-PSRemoting Tworzy dwie konfiguracje punktu końcowego komunikacji wirtualnej zgodnie z potrzebami. Jeśli konfiguracje punktu końcowego już istnieją, są po prostu upewnione się, że zostaną 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ę. Inna 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 otrzymasz 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 korzystać z nowo włączonych punktów końcowych komunikacji zdalnej, należy określić je według nazwy przy użyciu parametru ConfigurationName podczas tworzenia połączenia zdalnego przy użyciu Invoke-Commandpoleceń cmdlet ,New-PSSessionEnter-PSSession . Aby uzyskać więcej informacji, zobacz Przykład 4.

Polecenie Enable-PSRemoting cmdlet 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 proste i długie konfiguracje punktów końcowych sesji nazw 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.

Przestroga

To polecenie cmdlet nie ma wpływu na konfiguracje zdalnego punktu końcowego utworzone przez Windows PowerShell. Dotyczy to tylko punktów końcowych utworzonych za pomocą programu PowerShell w wersji 6 i nowszej. Aby włączyć i wyłączyć punkty końcowe komunikacji zdalnej programu PowerShell hostowane przez Windows PowerShell, uruchom Enable-PSRemoting polecenie cmdlet z poziomu sesji Windows PowerShell.

Przykłady

Przykład 1. Konfigurowanie komputera w celu 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 pomija 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 polecenia , 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 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, które zezwalają 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 do pomijania 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 Set-NetFirewallRule cmdlet 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 w nowo włączonej konfiguracji punktu końcowego

W tym przykładzie przedstawiono sposób włączania komunikacji zdalnej programu PowerShell na komputerze, znajdowania skonfigurowanych nazw punktów końcowych i tworzenia sesji zdalnej do jednego z punktów końcowych.

Pierwsze polecenie umożliwia komunikacji zdalnej programu PowerShell na komputerze.

Drugie polecenie zawiera listę konfiguracji punktów końcowych.

Trzecie polecenie tworzy zdalną sesję programu PowerShell na tej samej maszynie, określając punkt końcowy programu PowerShell.6 według nazwy. Sesja zdalna będzie hostowana przy użyciu najnowszej wersji programu PowerShell 6 (6.2.2).

Ostatnie polecenie uzyskuje dostęp do zmiennej w sesji zdalnej, aby wyświetlić wersję programu PowerShell, która hostuje $PSVersionTable sesję.

Enable-PSRemoting -Force

Get-PSSessionConfiguration

$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.6

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.6
PSVersion     : 6.2
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.6.2.2
PSVersion     : 6.2
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

Uwaga

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

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Wymusza uruchomienie polecenia bez monitowania o potwierdzenie użytkownika.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipNetworkProfileCheck

Wskazuje, że to polecenie cmdlet umożliwia komunikacja zdalną w 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ą lokalną regułę zapory podsieci dla sieci publicznych. Jeśli reguła zapory podsieci lokalnej jest wyłączona w wersji serwera, Enable-PSRemoting włącz ją ponownie 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 Set-NetFirewallRule polecenia cmdlet w module NetSecurity .

Ten parametr został wprowadzony w programie PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

None

Nie można przekazać potoku danych wejściowych do tego polecenia cmdlet.

Dane wyjściowe

String

To polecenie cmdlet zwraca ciągi opisujące wyniki.

Uwagi

To polecenie cmdlet jest dostępne tylko na platformach systemu Windows.

Na serwerach wersji systemu Enable-PSRemoting operacyjnego Windows tworzy reguły zapory dla sieci prywatnych i domen, które zezwalają na dostęp zdalny, i tworzy regułę zapory dla sieci publicznych, które umożliwiają dostęp zdalny tylko z komputerów w tej samej podsieci lokalnej.

W wersjach klienckich systemu Enable-PSRemoting operacyjnego Windows 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 wersjach 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 Set-NetFirewallRule polecenia cmdlet 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, ustawiając wartość właściwości Enabled wszystkich konfiguracji sesji na $True.

Enable-PSRemoting usuwa ustawienia Deny_All i Network_Deny_All . Zapewnia to zdalny dostęp do konfiguracji sesji zarezerwowanych do użytku lokalnego.