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.
Das Enable-PSRemoting
Cmdlet konfiguriert den Computer für den Empfang von PowerShell-Remotebefehlen, die mithilfe der WS-Management-Technologie gesendet werden. WS-Management basiertes PowerShell-Remoting wird derzeit nur auf der Windows-Plattform unterstützt.
PowerShell-Remoting ist auf Windows Server-Plattformen standardmäßig aktiviert. Sie können verwenden Enable-PSRemoting
, um PowerShell-Remoting in anderen unterstützten Versionen von Windows zu aktivieren und remoting erneut zu aktivieren, wenn es deaktiviert wird.
Sie müssen diesen Befehl nur einmal auf jedem Computer ausführen, der Befehle empfängt. Sie müssen es nicht auf Computern ausführen, die nur Befehle senden. Da die Konfiguration Listener startet, um Remoteverbindungen zu akzeptieren, ist es ratsam, sie nur dort auszuführen, wo sie benötigt wird.
Das Aktivieren von PowerShell-Remoting für Clientversionen von Windows, wenn sich der Computer in einem öffentlichen Netzwerk befindet, ist normalerweise nicht zulässig. Sie können diese Einschränkung jedoch mit dem SkipNetworkProfileCheck-Parameter überspringen. 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 jeweilige Installationsversion konfiguriert, in der Sie das Cmdlet ausführen. Wenn Sie also beim Ausführen von PowerShell 6.2 ausführen Enable-PSRemoting
, wird ein Remotingendpunkt konfiguriert, der PowerShell 6.2 ausführt. Wenn Sie beim Ausführen von PowerShell 7-preview ausführen Enable-PSRemoting
, wird ein Remotingendpunkt konfiguriert, der PowerShell 7-preview ausführt.
Enable-PSRemoting
erstellt nach Bedarf zwei Remotingendpunktkonfigurationen. Wenn die Endpunktkonfigurationen bereits vorhanden sind, wird einfach sichergestellt, dass sie aktiviert sind. 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 hostet. Wenn Sie beispielsweise in PowerShell 6.2 ausgeführt Enable-PSRemoting
werden, erhalten Sie zwei konfigurierte Endpunkte mit dem Namen PowerShell.6, PowerShell.6.2.2. Dadurch können Sie eine Verbindung mit der neuesten PowerShell 6-Hostversion herstellen, indem Sie den einfachen Namen PowerShell.6 verwenden. Alternativ können Sie eine Verbindung mit einer bestimmten PowerShell-Hostversion herstellen, indem Sie den längeren Namen PowerShell.6.2.2 verwenden.
Um die neu aktivierten Remotingendpunkte verwenden zu können, müssen Sie sie beim Erstellen einer Remoteverbindung mit den Cmdlets ,New-PSSession
,Enter-PSSession
mit dem Invoke-Command
Parameter ConfigurationName nach Namen angeben. Weitere Informationen finden im 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 des WinRM-Diensts 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 Sitzungsendpunktkonfigurationen mit einem einfachen und langen Namen.
- Aktiviert alle Sitzungskonfigurationen.
- Ändert die Sicherheitsbeschreibung aller Sitzungskonfigurationen, um Remotezugriff zuzulassen.
- Startet den WinRM-Dienst neu, damit die vorherigen Änderungen wirksam werden.
Um dieses Cmdlet auf der Windows-Plattform auszuführen, starten Sie PowerShell mit der Option Als Administrator ausführen. Dieses Cmdlet ist unter Linux- oder MacOS-Versionen von PowerShell nicht verfügbar.
Achtung
Dieses Cmdlet wirkt sich nicht auf remoteendpunktkonfigurationen aus, die von Windows PowerShell erstellt wurden.
Dies wirkt sich nur auf Endpunkte aus, die mit PowerShell Version 6 und höher erstellt wurden. Führen Sie das Cmdlet in einer Windows PowerShell-Sitzung aus, um PowerShell-Remotingendpunkte zu aktivieren und zu deaktivieren, die Enable-PSRemoting
von Windows PowerShell gehostet werden.
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 Force-Parameter 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 Sie den Remotezugriff von öffentlichen Netzwerken auf Clientversionen des Windows-Betriebssystems zulassen. Der Name der Firewallregel kann für verschiedene Versionen von Windows unterschiedlich sein.
Verwenden Sie Get-NetFirewallRule
, um eine Liste von Regeln anzuzeigen. Zeigen Sie vor dem Aktivieren der Firewallregel 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 SkipNetworkProfileCheck-Parameter, um Remotezugriff aus öffentlichen Netzwerken im gleichen lokalen Subnetz zuzulassen. Der Befehl gibt den Parameter Erzwingen an, um Bestätigungsmeldungen zu unterdrücken.
Der SkipNetworkProfileCheck-Parameter wirkt sich nicht auf Serverversionen des Windows-Betriebssystems aus, die standardmäßig den Remotezugriff aus öffentlichen Netzwerken im selben lokalen Subnetz zulassen.
Das Set-NetFirewallRule
Cmdlet im NetSecurity-Modul fügt eine Firewallregel hinzu, die den Remotezugriff von öffentlichen Netzwerken von jedem Remotestandort aus ermöglicht. Dies schließt Standorte in verschiedenen Subnetzen ein.
Beispiel 4: Create einer Remotesitzung mit der 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 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 nach Name 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 hostt.
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
Hinweis
Der Name der Firewallregel kann je nach Windows-Version unterschiedlich sein. Verwenden Sie das Get-NetFirewallRule
Cmdlet, um die Namen der Regeln auf Ihrem System aufzulisten.
Parameter
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Erzwingt die Ausführung des Befehls ohne Aufforderung zur Bestätigung durch den Benutzer.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipNetworkProfileCheck
Gibt an, dass dieses Cmdlet Remoting für Clientversionen des Windows-Betriebssystems aktiviert, wenn sich der Computer in einem öffentlichen Netzwerk befindet. Dieser Parameter aktiviert 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 Firewallregel des lokalen Subnetzes für eine Serverversion deaktiviert ist, Enable-PSRemoting
wird sie unabhängig vom Wert dieses Parameters erneut aktiviert.
Verwenden Sie das Cmdlet im NetSecurity-Modul, um die Einschränkung des lokalen Subnetzes zu entfernen und den Set-NetFirewallRule
Remotezugriff von allen Standorten in öffentlichen Netzwerken aus zu ermöglichen.
Dieser Parameter wurde in PowerShell 3.0 eingeführt.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
None
Sie können keine Objekte an dieses Cmdlet übergeben.
Ausgaben
Dieses Cmdlet gibt Zeichenfolgen zurück, die die Ergebnisse beschreiben.
Hinweise
Dieses Cmdlet ist nur auf Windows-Plattformen verfügbar.
Erstellt unter Serverversionen des Windows-Betriebssystems Firewallregeln für private Netzwerke und Domänennetzwerke, Enable-PSRemoting
die den Remotezugriff zulassen, und erstellt eine Firewallregel für öffentliche Netzwerke, die den Remotezugriff nur von Computern im gleichen lokalen Subnetz zulässt.
Erstellt in Clientversionen des Windows-Betriebssystems Firewallregeln für private Netzwerke und Domänennetzwerke, Enable-PSRemoting
die uneingeschränkten Remotezugriff ermöglichen. Um eine Firewallregel für öffentliche Netzwerke zu erstellen, die Remotezugriff aus dem gleichen lokalen Subnetz zulässt, verwenden Sie den SkipNetworkProfileCheck-Parameter.
Verwenden Sie auf Client- oder Serverversionen des Windows-Betriebssystems, um eine Firewallregel für öffentliche Netzwerke zu erstellen, die die lokale Subnetzeinschränkung entfernt und den Remotezugriff ermöglicht, das Set-NetFirewallRule
Cmdlet 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 $True
festgelegt wird.
Enable-PSRemoting
entfernt die einstellungen Deny_All und Network_Deny_All . Dadurch erhalten Sie Remotezugriff auf Sitzungskonfigurationen, die für die lokale Verwendung reserviert waren.