Enable-PSRemoting
Konfiguriert den Computer für den Empfang von Remotebefehlen.
Syntax
Default (Standard)
Enable-PSRemoting
[-Force]
[-SkipNetworkProfileCheck]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Dieses Cmdlet ist nur auf der Windows-Plattform verfügbar.
Das Enable-PSRemoting Cmdlet konfiguriert den Computer für den Empfang von PowerShell-Remotebefehlen, die mithilfe der WS-Management Technologie gesendet werden. WS-Management basierte PowerShell-Remoting wird derzeit nur auf Windows Plattform unterstützt.
PowerShell-Remoting ist auf Windows Server Plattformen standardmäßig aktiviert. Sie können Enable-PSRemoting verwenden, um PowerShell-Remoting für andere unterstützte Versionen von Windows zu aktivieren und Remoting erneut zu aktivieren, wenn sie deaktiviert wird.
Sie müssen diesen Befehl nur einmal auf jedem Computer ausführen, der Befehle empfängt. Sie müssen ihn nicht auf Computern ausführen, die Befehle nur senden sollen. Da die Konfiguration Listener startet, ist es umsichtig, sie nur dort auszuführen, wo sie benötigt wird.
Aktivieren von PowerShell-Remoting auf Clientversionen von Windows, wenn der Computer in einem öffentlichen Netzwerk normalerweise nicht zulässig ist, Sie können diese Einschränkung jedoch überspringen, indem Sie den Parameter SkipNetworkProfileCheck verwenden. Weitere Informationen finden Sie in der Beschreibung des SkipNetworkProfileCheck-Parameters .
Auf einem einzelnen Computer können mehrere PowerShell-Installationen nebeneinander vorhanden sein. Beim Ausführen Enable-PSRemoting wird ein Remotingendpunkt für die bestimmte Installationsversion konfiguriert, in der Sie das Cmdlet ausführen. Wenn Sie also während der Ausführung von PowerShell 6.2 ausführen Enable-PSRemoting , wird ein Remoting-Endpunkt konfiguriert, der PowerShell 6.2 ausführt. Wenn Sie während der Ausführung von PowerShell 7-Preview ausgeführt Enable-PSRemoting werden, wird ein Remotingendpunkt konfiguriert, der PowerShell 7-Preview ausführt.
Enable-PSRemoting erstellt bei Bedarf zwei Remotingendpunktkonfigurationen. 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 hosten. Der andere Konfigurationsname enthält ausführlichere Informationen zur PowerShell-Version, die die Sitzung hosten soll. Wenn Sie beispielsweise in PowerShell 6.2 ausgeführt Enable-PSRemoting werden, 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.2 verwenden.
Wenn Sie die neu aktivierten Remotingendpunkte verwenden möchten, müssen Sie diese mit dem Parameter ConfigurationName angeben, wenn Sie eine Remoteverbindung mit den Invoke-CommandCmdletsNew-PSSessionEnter-PSSession erstellen. Weitere Informationen finden Sie in Beispiel 4.
Das Enable-PSRemoting Cmdlet 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 eine beliebige IP-Adresse zu akzeptieren.
- Aktiviert eine Firewall-Ausnahme für WS-Management Kommunikation.
- Erstellt bei Bedarf die Konfigurationen des einfachen und langen Sitzungsendpunkts.
- 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-Remotingendpunkte 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.
Wird verwendet Get-NetFirewallRule , um eine Liste der Regeln anzuzeigen. Bevor Sie die Firewallregel aktivieren, zeigen Sie die Sicherheitseinstellungen in der Regel an, um zu überprüfen, ob 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
Erstellt standardmäßig Netzwerkregeln, Enable-PSRemoting 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 betriebssystems Windows aus, die den Remotezugriff von öffentlichen Netzwerken im selben lokalen Subnetz standardmäßig zulassen.
Das Set-NetFirewallRule Cmdlet im NetSecurity-Modul 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 einer Remotesitzung für die neu aktivierte Endpunktkonfiguration
In diesem Beispiel wird gezeigt, wie Sie PowerShell-Remoting auf einem Computer aktivieren, die konfigurierten Endpunktnamen suchen und eine Remotesitzung für einen der 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 gibt den PowerShell.7-Endpunkt anhand des Namens an. 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
Note
Der Name der Firewallregel kann je nach Version von Windows unterschiedlich sein. Verwenden Sie das Get-NetFirewallRule Cmdlet, um die Namen der Regeln auf Ihrem System aufzulisten.
Parameter
-Confirm
Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Cf |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Force
Erzwingt die Ausführung des Befehls, ohne eine Benutzerbestätigung zu verlangen.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-SkipNetworkProfileCheck
Gibt an, dass dieses Cmdlet das 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, das standardmäßig über eine lokale Subnetzfirewallregel für öffentliche Netzwerke verfügt. Wenn die lokale Subnetzfirewallregel in einer Serverversion deaktiviert ist, Enable-PSRemoting wird sie unabhängig vom Wert dieses Parameters erneut aktiviert.
Verwenden Sie das Set-NetFirewallRule Cmdlet im NetSecurity-Modul , um die lokale Subnetzeinschränkung zu entfernen und den Remotezugriff von allen Standorten in öffentlichen Netzwerken zu aktivieren.
Dieser Parameter wurde in PowerShell 3.0 eingeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Wi |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
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 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 ermöglichen. Verwenden Sie den Parameter SkipNetworkProfileCheck , 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 betriebssystems Windows eine Firewallregel für öffentliche Netzwerke, die die lokale Subnetzeinschränkung entfernt und den Remotezugriff zulässt, das Cmdlet Set-NetFirewallRule im NetSecurity-Modul, um den folgenden Befehl auszuführen: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Enable-PSRemoting aktiviert alle Sitzungskonfigurationen, indem der Wert der Enabled-Eigenschaft aller Sitzungskonfigurationen auf festgelegt $truewird.
Enable-PSRemoting entfernt die Einstellungen für Deny_All und Network_Deny_All . Dies ermöglicht den Remotezugriff auf Sitzungskonfigurationen, die für die lokale Verwendung reserviert wurden.