Wie man Enter-PSSession verwendet, um Remote-Befehle in einer interaktiven Shell auszuführen

Verwendung von Enter-PSSession für die Remote-PowerShell-Verwaltung

Das Cmdlet „Enter-PSSession“ ist eines dieser Tools, das die Remote-Verwaltung mehrerer Windows-Rechner deutlich vereinfacht. Ob Sie ein Problem beheben, Konfigurationen bereitstellen oder einfach nur einen Remote-Server überprüfen möchten – es ist meist die erste Wahl. In manchen Umgebungen kann es etwas knifflig werden – aufgrund von Netzwerk- oder Berechtigungsproblemen funktioniert es möglicherweise nicht sofort. Sobald es aber läuft, ist es äußerst komfortabel. Beachten Sie, dass Sie je nach Umgebung eventuell einige Einstellungen anpassen oder Befehle ausführen müssen, damit alles reibungslos funktioniert. Und ja, Windows macht es einem manchmal unnötig kompliziert.

In den meisten Fällen muss PowerShell-Remoting aktiviert sein – andernfalls kann keine Verbindung hergestellt werden. Unter Windows Server 2016 und neueren Versionen ist PSRemoting standardmäßig aktiviert, auf Desktop-Systemen wie Windows 10 oder 11 müssen Sie es jedoch möglicherweise manuell aktivieren. Prüfen Sie, ob Ihr System bereit ist. Wenn Sie keine Berechtigung haben, können Sie keine Sitzung herstellen. Berechtigungen sind daher wichtig.

So beheben Sie häufige Probleme mit Enter-PSSession

Aktivieren von PowerShell-Remoting unter Windows 10/11 für den Remotezugriff

Standardmäßig ist PSRemoting auf Desktop-Windows-Installationen (Win10/11) deaktiviert, vermutlich weil Microsoft befürchtet, dass die meisten Benutzer dadurch Sicherheitsrisiken eingehen könnten. Um es zu aktivieren, öffnen Sie PowerShell als Administrator und führen Sie folgenden Befehl aus:

Enable-PSRemoting -Force

Dieser Befehl bewirkt einiges: Er aktiviert WinRM, stellt den automatischen Start ein, optimiert die Firewall und startet den Dienst neu. In öffentlichen Netzwerken müssen Sie unter Umständen die Option `-SkipNetworkProfileCheck` hinzufügen, etwa so:

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Dies ist wichtig, da WinRM in öffentlichen WLANs oder bei bestimmten Netzwerkprofilen deaktiviert bleiben kann.

Überprüfung, ob WinRM tatsächlich ausgeführt wird und auf Anfragen wartet.

Falls die Remote-Verbindung weiterhin fehlschlägt, überprüfen Sie, ob der WinRM-Dienst ordnungsgemäß funktioniert. Führen Sie Folgendes aus:

Get-Service WinRM | Select MachineName, Name, Status, StartType

Alles in Ordnung? Der Status sollte „Wird ausgeführt“ anzeigen und der Starttyp auf „Automatisch“ eingestellt sein. Falls nicht, starten Sie es manuell mit:

Start-Service WinRM

Manchmal blockiert die Firewall eingehenden WinRM-Datenverkehr.Überprüfen Sie, ob der TCP-Port 5985 (HTTP) oder 5986 (HTTPS, falls SSL aktiviert ist) in Ihren Firewall-Regeln geöffnet ist. Sie können dies in den bestehenden Windows-Firewall-Einstellungen oder über PowerShell überprüfen.

New-NetFirewallRule -Name "WinRM HTTP" -DisplayName "Allow WinRM over HTTP" -Protocol TCP -LocalPort 5985 -Action Allow

Weisen Sie Ihrem Benutzer die richtige Gruppe zu

Aus Sicherheitsgründen dürfen nur bestimmte Benutzergruppen eine Remote-Verbindung herstellen. Normalerweise muss Ihr Konto zu den Administratoren oder Remote-Verwaltungsbenutzern gehören. In manchen Konfigurationen müssen Sie sich möglicherweise explizit hinzufügen. Führen Sie folgenden Befehl in PowerShell aus:

Add-LocalGroupMember -Group "Remote Management Users" -Member "YourUsername"

Ersetzen Sie YourUsername„Benutzername“ durch Ihren tatsächlichen Benutzernamen. Das reicht in der Regel aus, sofern dies nicht durch Active Directory-Richtlinien blockiert wird.

Hinzufügen eines Remote-Hosts als TrustedHost

Wenn Sie versuchen, eine Verbindung über eine IP-Adresse oder einen CNAME-Eintrag (nicht über eine vollständige Domain) herzustellen, stoßen Sie möglicherweise auf Einschränkungen von TrustedHosts. Um dies zu beheben, führen Sie folgenden Befehl aus:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100"

Oder, für mehrere Hosts oder Platzhalter:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.woshub.com"

Starten Sie anschließend den WinRM-Dienst neu mit:

Restart-Service WinRM

Beachten Sie, dass das Hinzufügen von Hosts zu TrustedHosts Sicherheitsrisiken mit sich bringen kann. Gehen Sie daher mit Bedacht vor.

Testen der lokalen oder Remote-Konnektivität

Bevor Sie versuchen, eine Remote-Verbindung herzustellen, überprüfen Sie die lokale Einrichtung mit folgendem Befehl:

Test-WSMan -ComputerName localhost

Wenn die Versionsinformationen fehlerfrei zurückgegeben werden, ist Ihre WinRM-Konfiguration korrekt. Andernfalls müssen Sie zuerst die Serverseite überprüfen. Beachten Sie: Wenn die Remote-Verbindung nicht aktiviert ist, erhalten Sie eine Meldung, dass keine Verbindung hergestellt werden kann, und es werden Fehler wie die folgenden angezeigt:

Test-WSMan : 

Making the Actual Connection

Once everything’s ready, connecting is straightforward:

Enter-PSSession -ComputerName your_remote_host

If you need credentials, use the -Credentials switch:

Enter-PSSession -ComputerName your_remote_host -Credentials (Get-Credential)

This will pop up a login box. On one setup it worked right away, on another I had to make sure the user was in the right group and WinRM was enabled everywhere. Weird thing is sometimes it’s flakey, especially if you’re mixing domain and workgroup machines or trying over IP without proper trust. Just keep an eye on those details.

Over SSH — Modern Twist for PowerShell Remoting

Up to PowerShell 7+, you can also connect over SSH if you have the built-in OpenSSH server enabled on the remote Windows machine (fingers crossed it’s set up).Use:

Enter-PSSession -HostName user@hostname

Or with an SSH key:

Enter-PSSession -HostName user@hostname -KeyFilePath C:\PS\max_rsa_key

This is kind of a newer, more secure way, especially if WinRM isn’t an option.

Remember, if connecting over IP, you'll likely need to add the host to the TrustedHosts list, because of how default WinRM settings work. Otherwise, authentication gets weird.

In general, using Enter-PSSession and related commands like New-PSSession are perfect for interactive sessions — but for scripting or running on multiple machines at once, you’d probably jump into Invoke-Command.

And of course, Windows has to keep us on our toes with all these hoops. If something isn’t working, it’s usually worth double-checking the firewalls, permissions, and whether everything is enabled properly. Because of course, Windows has to make it just a little more complicated than it needs to be.