Freigeben über


Enable-PSRemoting

Konfiguriert den Computer für den Empfang von Remotebefehlen.

Syntax

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

Beschreibung

Dieses Cmdlet ist nur auf der Windows-Plattform verfügbar.

Mit dem Cmdlet Enable-PSRemoting wird der Computer so konfiguriert, dass PowerShell-Remotebefehle empfangen werden, die mithilfe der WS-Management Technologie gesendet werden. WS-Management-basiertes PowerShell-Remotenutzung wird derzeit nur auf der Windows-Plattform unterstützt.

PowerShell-Remoting ist auf Windows Server-Plattformen standardmäßig aktiviert. Sie können Enable-PSRemoting verwenden, um PowerShell-Remoting in anderen unterstützten Versionen von Windows zu aktivieren und Remoting erneut zu aktivieren, falls es deaktiviert wird.

Sie müssen diesen Befehl nur einmal auf jedem Computer ausführen, der Befehle empfängt. Sie müssen sie nicht auf Computern ausführen, die nur Befehle senden. Da die Konfiguration Listener startet, ist es ratsam, den Befehl nur im Bedarfsfall auszuführen.

Das Aktivieren der PowerShell-Remoteverwaltung auf Clientversionen von Windows ist normalerweise nicht zulässig, wenn sich der Computer in einem öffentlichen Netzwerk befindet. Sie können diese Einschränkung jedoch umgehen, indem Sie den Parameter SkipNetworkProfileCheck verwenden. Weitere Informationen finden Sie in der Beschreibung des parameters SkipNetworkProfileCheck.

Auf einem einzelnen Computer können mehrere PowerShell-Installationen nebeneinander vorhanden sein. Das Ausführen von Enable-PSRemoting konfiguriert einen Remoting-Endpunkt für die bestimmte Installationsversion, in der Sie das cmdlet ausführen. Wenn Sie also Enable-PSRemoting ausführen, während PowerShell 6.2 ausgeführt wird, wird ein Remoting-Endpunkt konfiguriert, der PowerShell 6.2 ausführt. Wenn Sie also Enable-PSRemoting ausführen, während PowerShell 7-Preview ausgeführt wird, wird ein Remoting-Endpunkt konfiguriert, der PowerShell 7-Preview ausführt.

Enable-PSRemoting erstellt bei Bedarf zwei Remoting-Endpunkt-Konfigurationen. Wenn die Endpunktkonfigurationen bereits vorhanden sind, wird einfach sichergestellt, dass sie aktiviert werden. Die erstellten Konfigurationen sind identisch, weisen jedoch unterschiedliche Namen auf. Einer hat einen einfachen Namen, der der PowerShell-Version entspricht, die die Sitzung hostet. Der andere Konfigurationsname enthält ausführlichere Informationen zur PowerShell-Version, die die Sitzung hosten soll. Wenn Sie beispielsweise Enable-PSRemoting in PowerShell 6.2 ausführen, erhalten Sie zwei konfigurierte Endpunkte namens PowerShell.6, PowerShell.6.2.2. Auf diese Weise können Sie mithilfe des einfachen Namens PowerShell.6-eine Verbindung mit der neuesten PowerShell 6-Hostversion erstellen. Sie können auch eine Verbindung mit einer bestimmten PowerShell-Hostversion herstellen, indem Sie den längeren Namen PowerShell.6.2.2verwenden.

Wenn Sie die neu aktivierten Remoting-Endpunkte verwenden möchten, müssen Sie diese mit dem Parameter ConfigurationName angeben, wenn Sie eine Remoteverbindung mithilfe der Invoke-Command,New-PSSession,Enter-PSSession cmdlets erstellen. Weitere Informationen finden Sie unter Beispiel 4.

Das Cmdlet Enable-PSRemoting führt die folgenden Vorgänge aus:

  • Führt das Cmdlet Set-WSManQuickConfig aus, das die folgenden Aufgaben ausführt:
    • Startet den WinRM-Dienst.
    • Legt den Starttyp für den WinRM-Dienst auf "Automatisch" fest.
    • Erstellt einen Listener, um Anforderungen an beliebige IP-Adressen zu akzeptieren.
    • Aktiviert eine Firewallausnahme für die Kommunikation von WS-Management.
    • Erstellt bei Bedarf die Konfigurationen für Sitzungsendpunkte mit einfachem und langem Namen.
    • Aktiviert alle Sitzungskonfigurationen.
    • Ändert die Sicherheitsbeschreibung aller Sitzungskonfigurationen, um den Remotezugriff zu ermöglichen.
  • Startet den WinRM-Dienst neu, um die vorherigen Änderungen wirksam zu machen.

Um dieses Cmdlet auf der Windows-Plattform auszuführen, starten Sie PowerShell mithilfe der Option "Als Administrator ausführen". Dieses Cmdlet ist unter Linux- oder macOS-Versionen von PowerShell nicht verfügbar.

Vorsicht

Dieses Cmdlet wirkt sich nicht auf Remoteendpunktkonfigurationen aus, die von Windows PowerShell erstellt wurden. Er wirkt sich nur auf Endpunkte aus, die mit PowerShell Version 6 und höher erstellt wurden. Um PowerShell-Remoteendpunkte zu aktivieren und zu deaktivieren, die von Windows PowerShell gehostet werden, führen Sie das cmdlet Enable-PSRemoting innerhalb einer Windows PowerShell-Sitzung aus.

Weitere Informationen zur Verwendung von PowerShell-Remoting finden Sie in den folgenden Artikeln:

Beispiele

Beispiel 1: Konfigurieren eines Computers für den Empfang von Remotebefehlen

Mit diesem Befehl wird der Computer für den Empfang von Remotebefehlen konfiguriert.

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.

Beispiel 2: Konfigurieren eines Computers für den Empfang von Remotebefehlen ohne Bestätigungsaufforderung

Mit diesem Befehl wird der Computer für den Empfang von Remotebefehlen konfiguriert. Der Parameter Force unterdrückt die Benutzeraufforderungen.

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.

Beispiel 3: Zulassen des Remotezugriffs auf Clients

In diesem Beispiel wird gezeigt, wie Remotezugriff von öffentlichen Netzwerken in Clientversionen des Windows-Betriebssystems zugelassen wird. Der Name der Firewallregel kann für verschiedene Versionen von Windows unterschiedlich sein. Verwenden Sie Get-NetFirewallRule, um eine Liste der Regeln anzuzeigen. Bevor Sie die Firewallregel aktivieren, sehen Sie sich die Sicherheitseinstellungen der Regel an, um sicherzustellen, dass die Konfiguration für Ihre Umgebung geeignet ist.

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

Standardmäßig erstellt Enable-PSRemoting Netzwerkregeln, die den Remotezugriff von privaten und Domänennetzwerken zulassen. Der Befehl verwendet den parameter SkipNetworkProfileCheck, um den Remotezugriff von öffentlichen Netzwerken im selben lokalen Subnetz zu ermöglichen. Der Befehl gibt den parameter Force an, um Bestätigungsmeldungen zu unterdrücken.

Der parameter SkipNetworkProfileCheck wirkt sich nicht auf Serverversionen des Windows-Betriebssystems aus, die den Remotezugriff von öffentlichen Netzwerken im selben lokalen Subnetz standardmäßig zulassen.

Das cmdlet Set-NetFirewallRule im modul NetSecurity fügt eine Firewallregel hinzu, die den Remotezugriff von öffentlichen Netzwerken von einem beliebigen Remotestandort aus zulässt. Dazu gehören Standorte in verschiedenen Subnetzen.

Beispiel 4: Erstellen Sie eine Remotesitzung zur neu aktivierten Endpunktkonfiguration

In diesem Beispiel wird gezeigt, wie Sie PowerShell-Remoting auf einem Computer aktivieren, die konfigurierten Endpunktnamen ermitteln und eine Remotesitzung für einen dieser Endpunkte erstellen.

Der erste Befehl aktiviert PowerShell-Remoting auf dem Computer.

Der zweite Befehl listet die Endpunktkonfigurationen auf.

Der dritte Befehl erstellt eine PowerShell-Remotesitzung auf demselben Computer und benennt den PowerShell.7- Endpunkt nach Name. Die Remotesitzung wird mit der neuesten PowerShell 7-Version (7.3.0) gehostet.

Der letzte Befehl greift auf die $PSVersionTable Variable in der Remotesitzung zu, um die PowerShell-Version anzuzeigen, die die Sitzung hosten soll.

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

Anmerkung

Der Name der Firewallregel kann je nach Windows-Version unterschiedlich sein. Verwenden Sie das Cmdlet Get-NetFirewallRule, um die Namen der Regeln auf Ihrem System aufzulisten.

Parameter

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Force

Erzwingt die Ausführung des Befehls, ohne eine Benutzerbestätigung zu verlangen.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-SkipNetworkProfileCheck

Gibt an, dass dieses Cmdlet Remoting auf Clientversionen des Windows-Betriebssystems ermöglicht, wenn sich der Computer in einem öffentlichen Netzwerk befindet. Dieser Parameter ermöglicht eine Firewallregel für öffentliche Netzwerke, die den Remotezugriff nur von Computern im selben lokalen Subnetz zulässt.

Dieser Parameter wirkt sich nicht auf Serverversionen des Windows-Betriebssystems aus, die standardmäßig über eine lokale Subnetzfirewallregel für öffentliche Netzwerke verfügen. Wenn die lokale Subnetzfirewallregel auf einer Serverversion deaktiviert ist, aktiviert Enable-PSRemoting sie erneut, unabhängig vom Wert dieses Parameters.

Um die lokale Subnetzeinschränkung zu entfernen und den Remotezugriff von allen Standorten in öffentlichen Netzwerken zu aktivieren, verwenden Sie das Cmdlet Set-NetFirewallRule im modul NetSecurity.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-WhatIf

Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

String

Dieses Cmdlet gibt Zeichenfolgen zurück, die die Ergebnisse beschreiben.

Hinweise

Dieses Cmdlet ist nur auf Windows-Plattformen verfügbar.

In Serverversionen des Windows-Betriebssystems erstellt Enable-PSRemoting Firewallregeln für private und Domänennetzwerke, die den Remotezugriff zulassen, und erstellt eine Firewallregel für öffentliche Netzwerke, die den Remotezugriff nur von Computern im selben lokalen Subnetz zulässt.

In Clientversionen des Windows-Betriebssystems erstellt Enable-PSRemoting Firewallregeln für private und Domänennetzwerke, die uneingeschränkten Remotezugriff zulassen. Verwenden Sie den SkipNetworkProfileCheck Parameter, um eine Firewallregel für öffentliche Netzwerke zu erstellen, die den Remotezugriff über dasselbe lokale Subnetz ermöglicht.

Erstellen Sie auf Client- oder Serverversionen des Windows-Betriebssystems eine Firewallregel für öffentliche Netzwerke, die die lokale Subnetzeinschränkung entfernt und den Remotezugriff zulässt, indem Sie das Cmdlet Set-NetFirewallRule im NetSecurity-Modul verwenden, um den folgenden Befehl auszuführen: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting ermöglicht alle Sitzungskonfigurationen, indem der Wert der Eigenschaft Enabled aller Sitzungskonfigurationen auf $True festgelegt wird.

Enable-PSRemoting entfernt die Einstellungen Deny_All und Network_Deny_All. Dies ermöglicht den Remotezugriff auf Sitzungskonfigurationen, die für die lokale Verwendung reserviert wurden.