PowerShell von Microsoft ist eine Kommandozeilenanwendung, die einen deutlich größeren Funktionsumfang als die klassische cmd.exe besitzt. Mit Hilfe des Windows Remote Management (WinRM) lassen sich remote PowerShell-Skripts ausführen und Windows-Systeme verwalten. Normalerweise lässt sich dies auch schnell und einfach einrichten. Bei Problemen ist die Fehlermeldung kryptisch und gibt keinen Aufschluss auf das eigentliche Problem. In diesem Beitrag will ich einen Lösungsansatz beschreiben.
Symptom
Obwohl WinRM korrekt konfiguriert wurde, der Dienst auf dem Zielsystem läuft und ein Ping mit dem System erfolgreich ist, schlägt der Verbindungsaufbau mit dem Dienst über test-wsman server-1 fehl.
>test-wsman server-1
test-wsman : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".
At line:1 char:1
+ test-wsman server-1
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (server-1:String) [Test-WSMan], InvalidOperationException
+ FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.TestWSManCommand
Problem
Nachdem sichergestellt ist, dass beide Systeme miteinander kommunizieren können und die Firewall korrekt konfiguriert wurde, kann man noch prüfen, ob die eingehenden Pakete überhaupt an den richtigen Port adressiert werden. Die Überprüfung mit winrm e winrm/config/listener ergibt, dass der WinRM-Dienst auf Port 80 gebunden ist. Die Anfragen gehen jedoch standardmäßig auf Port 5985 ein.
>winrm e winrm/config/listener
Listener
Adress = *
Transport = HTTP
Port = 80
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbrint
ListeningOn = 127.0.0.1, 192.168.1.50, [..]
Listener [Source="Compatibility"]
Adress = *
Transport = HTTP
Port = 80
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbrint
ListeningOn = 127.0.0.1, 192.168.1.50, [..]
Lösungstrategie
Die Korrektur des Listeners auf Port 5985 löst das Problem, wir verwenden dafür den Befehl winrm set winrm/config/Listener?Address=*+Transport=HTTP @{Port="5985"}.