So aktivieren und verwalten Sie PowerShell-Remoting in Windows
PowerShell-Remoting (kurz PSRemoting) ist eine äußerst nützliche Funktion, die auf Desktop-Rechnern – insbesondere unter Windows 10 und 11 – oft standardmäßig deaktiviert ist. Wenn Sie mehrere Rechner verwalten oder Skripte remote ausführen möchten, kann die Aktivierung dieser Funktion mühsam sein, ohne alles zu beschädigen. Auf Servern ist sie in der Regel aktiviert, aber auf normalen Windows-Systemen eher selten. Diese Anleitung führt Sie durch die Einrichtung, zeigt Ihnen, wie Sie die Funktion testen und was Sie tun können, falls Probleme auftreten. Das Ziel? Sie möchten problemlos auf Remote-PowerShell-Sitzungen zugreifen oder Befehle in Ihrem Netzwerk ausführen können.
Sobald das funktioniert, ist es, als hätte man eine geheime Superkraft: Rechner verwalten, ohne vom Schreibtisch aufstehen zu müssen. Die Aktivierung von Remoting birgt jedoch auch Sicherheitsrisiken, daher ist eine korrekte Vorgehensweise wichtig. Rechnen Sie mit Befehlen wie [Befehl einfügen] Enable-PSRemotingund der Verwaltung von WinRM-Diensten – sowie einigen Anpassungen Ihrer Firewall-Einstellungen. Im Grunde geht es darum, WinRM und PowerShell so aufeinander abzustimmen, dass die Fernverwaltung reibungslos funktioniert.
So beheben Sie PowerShell-Remoting-Probleme in Windows
PowerShell-Remoting (WinRM) unter Windows aktivieren und testen
Das ist der klassische Fall: Wenn PowerShell-Remoting nicht funktioniert, ist WinRM wahrscheinlich noch nicht eingerichtet. Unter Windows 10/11 ist es in den Desktop-Versionen standardmäßig deaktiviert, was ziemlich ärgerlich ist, wenn man Skripte verwenden oder die Remote-Verwaltung nutzen möchte. Auf Windows Server ist es meist bereits aktiviert, aber auf normalen Desktop-Systemen eher selten.
Überprüfen Sie zunächst, ob WinRM ausgeführt wird, indem Sie Folgendes ausführen:
Test-WSMan
Wenn eine Fehlermeldung erscheint, die besagt, dass der Client keine Verbindung herstellen kann oder der WinRM-Dienst nicht gefunden wurde, sollten Sie ihn aktivieren.Überprüfen Sie mit folgendem Befehl, ob der WinRM-Dienst ausgeführt wird:
Get-Service -Name WinRM
Wenn Sie feststellen, dass der Dienst gestoppt ist oder ein Listener fehlt, ist es Zeit, ihn zu aktivieren. Am einfachsten geht das mit folgendem Befehl:
Enable-PSRemoting
oder
winrm quickconfig
Dieser Befehl führt im Hintergrund diverse Aktionen aus: Er startet den WinRM-Dienst, konfiguriert Firewallregeln für die Ports 5985 (HTTP) und 5986 (HTTPS), erstellt einen Listener und registriert die Standardkonfigurationen der PowerShell-Sitzung. Beachten Sie, dass insbesondere in Umgebungen ohne Domäne die Firewallregeln möglicherweise manuell angepasst werden müssen oder Fehler bezüglich Netzwerkprofilen auftreten können.
Beim Ausführen des Befehls winrm quickconfigwerden alle oben genannten Schritte automatisch durchgeführt. In manchen Konfigurationen, insbesondere in Arbeitsgruppen- oder öffentlichen Netzwerken, kann ein Fehler aufgrund von Netzwerkprofilbeschränkungen auftreten. Um diesen zu umgehen, können Sie folgenden Befehl ausführen:
Enable-PSRemoting –SkipNetworkProfileCheck -Force
Es richtet alles ein – selbst wenn Ihr Netzwerk öffentlich ist. Seien Sie jedoch vorsichtig, denn in ungesicherten Netzwerken ist Ihr Remote-Datenverkehr nicht verschlüsselt, es sei denn, Sie haben HTTPS für WinRM eingerichtet.
Überprüfen Sie anschließend, ob der Listener wie folgt eingerichtet ist:
WinRM enumerate winrm/config/listener
Wenn alles reibungslos verlaufen ist, sollte ein HTTP-Listener auf Port 5985 angezeigt werden. Um zu testen, ob Remote-Befehle funktionieren, versuchen Sie, eine Verbindung zu einem vertrauenswürdigen Rechner herzustellen, indem Sie Folgendes verwenden:
Test-WSMan -ComputerName TargetComputerName
Wenn das ohne Fehler zurückkommt, ist alles in Ordnung. Sie können dann Remotesitzungen mit Folgendem starten:
Enter-PSSession -ComputerName TargetComputerNameInvoke-Command -ComputerName TargetComputerName -ScriptBlock { Get-Process }
Hinweis: Bei manchen Konfigurationen, insbesondere bei Verbindungen über IP oder in Arbeitsgruppen, müssen Sie den Remotecomputer möglicherweise Ihrer TrustedHosts-Liste hinzufügen:
Set-Item wsman:\localhost\client\TrustedHosts -Value "TargetIPOrName" -Force
Oder, um es schnell und einfach zu machen, erlauben Sie alles:
Set-Item wsman:\localhost\client\TrustedHosts -Value *
In den meisten Fällen reicht dies für die Remote-Verbindung aus. Wichtig: Die standardmäßige Kerberos-Authentifizierung funktioniert nur, wenn sich beide Rechner in derselben Active Directory-Domäne befinden. Andernfalls ist HTTPS oder NTLM (weniger sicher) erforderlich.
Remote-PowerShell-Zugriff für Nicht-Administratoren zulassen
Normalerweise können nur Mitglieder der lokalen Administratoren oder der Gruppe „Remote-Verwaltungsbenutzer“ eine Remote-Verbindung mit PowerShell herstellen. Sie können jedoch auch Benutzern ohne Administratorrechte Zugriff gewähren, ohne ihnen alle Administratorrechte zu entziehen.
Versuchen Sie, sich als normaler Benutzer anzumelden, und Sie werden höchstwahrscheinlich die Fehlermeldung „Zugriff verweigert“ erhalten. Das ist nicht überraschend. Die Standardberechtigungen erlauben nur bestimmten Gruppen den Zugriff.
(Get-PSSessionConfiguration -Name Microsoft. PowerShell).Permission
Dies gibt üblicherweise „AccessAllowed“ für integrierte Gruppen wie die folgenden zurück:
- Administratoren
- Benutzer der Fernverwaltung
Um einem Benutzer das Recht zur Fernverbindung zu erteilen, fügen Sie ihn einfach der Gruppe „Benutzer für die Fernverwaltung“ hinzu:
Add-LocalGroupMember -Group "Remote Management Users" -Member "username"
Sie können dies über die Befehlszeile oder die grafische Benutzeroberfläche (Computerverwaltung > Lokale Benutzer und Gruppen) durchführen. Versuchen Sie nach dem Hinzufügen erneut, sich mit diesem Benutzer zu verbinden; es sollte funktionieren.
Wenn Sie die genauen Sicherheitsberechtigungen für die PowerShell-Sitzungskonfiguration anpassen müssen, können Sie die Benutzeroberfläche des Sicherheitsdeskriptors mit folgendem Befehl öffnen:
Set-PSSessionConfiguration -Name Microsoft. PowerShell -showSecurityDescriptorUI
Hier können Sie bestimmte Benutzer/Gruppen hinzufügen oder Berechtigungen wie „Vollzugriff“ / „Ausführen“ festlegen. Fortgeschrittene Benutzer können die aktuellen Berechtigungen als Zeichenfolge exportieren, um sie systemübergreifend zu replizieren.
(Get-PSSessionConfiguration -Name "Microsoft. PowerShell").SecurityDescriptorSDDL
Anschließend können Sie dieselben Berechtigungen an anderer Stelle zuweisen mit:
$SDDL = "..." // your SDDL string"
Set-PSSessionConfiguration -Name Microsoft. PowerShell -SecurityDescriptorSddl $SDDL
Dies ermöglicht eine präzise Steuerung, wer PowerShell-Befehle remote ausführen darf, wodurch die Sicherheit gewährleistet und gleichzeitig Flexibilität erhalten bleibt.
So deaktivieren Sie PowerShell-Remoting, wenn es nicht benötigt wird
Wenn Sie diese Funktion deaktivieren möchten, führen Sie Folgendes aus:
Disable-PSRemoting -Force
Dadurch wird der WinRM-Dienst beendet, die Listener werden entfernt und die Firewall-Regeln deaktiviert. Beachten Sie jedoch, dass dies nicht alles automatisch rückgängig macht. Sie müssen die Listener möglicherweise manuell entfernen.
Remove-Item -Path WSMan:\Localhost\Listener\listener* -Recurse
Und schließlich sollten Sie den WinRM-Dienst stoppen und deaktivieren:
Stop-Service WinRM; Set-Service WinRM -StartupType Disabled -PassThru
Vergessen Sie außerdem nicht, die Firewall-Regeln zu deaktivieren, wenn Sie das System wirklich offline nehmen wollen:
Get-NetFirewallRule -DisplayGroup "Windows Remote Management" | Where-Object {$_. Enabled -eq "True"} | Disable-NetFirewallRuleUm den Fernzugriff auf Ihre lokalen Kontotoken zu verhindern (insbesondere für Administratoren), müssen Sie möglicherweise auch den Registrierungsschlüssel „LocalAccountTokenFilterPolicy“ wie folgt anpassen:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 0 /fZusatzinformation: Deaktivieren Sie bei Bedarf die Remote-PowerShell-Funktion für Exchange-Benutzer.
Wenn Sie Exchange Server (oder Exchange Online) verwalten, ist es üblich, dass Benutzer standardmäßig Zugriff auf Remote-PowerShell haben. Aus Sicherheitsgründen, insbesondere für Benutzer ohne Administratorrechte oder Dienstkonten, ist es jedoch ratsam, diesen Zugriff einzuschränken. Sie können überprüfen, wer über Remote-PowerShell-Berechtigungen verfügt, indem Sie folgenden Befehl verwenden:
Get-User -ResultSize Unlimited -Filter 'RemotePowerShellEnabled -eq $true'Und deaktivieren Sie den Fernzugriff für bestimmte Benutzer durch Ausführen von:
Set-User -Identity "[email protected]" -RemotePowerShellEnabled $falseDies trägt zu einer sicheren Handhabung bei und verhindert versehentliche oder böswillige Aktionen von Konten mit geringen Berechtigungen.
Zusammenfassung
Die Einrichtung von PowerShell Remoting ist nicht sonderlich kompliziert, doch es gibt einige häufige Fallstricke im Zusammenhang mit Netzwerkprofilen, Firewall-Einstellungen und Berechtigungen. Nach der Konfiguration spart es enorm viel Zeit bei der Verwaltung mehrerer Remote-Server oder -Rechner. Achten Sie dabei stets auf die Sicherheit, insbesondere in öffentlichen Netzwerken oder weniger sicheren Umgebungen, und testen Sie die Konfiguration nach jeder Änderung.
Zusammenfassung
- Aktivieren Sie PSRemoting mit
Enable-PSRemotingoderwinrm quickconfig - Überprüfen Sie Ihren Service- und Hörerstatus.
- Fügen Sie bei Bedarf vertrauenswürdige Hosts hinzu.
- Gewähren Sie Nicht-Administratoren über Gruppen Fernzugriff.
- Deaktivieren Sie es, wenn es nicht mehr benötigt wird.
Disable-PSRemoting