PowerShell Core auf Windows 7 – nicht ganz so einfach wie es sein könnte

Der Spruch „PowerShell on every system“ entspricht zwar der Realität, unter Windows 7 SP1 64 Bit ist es allerdings nicht ganz so einfach wie es sein könnte PowerShell Core 6.1.x zu installieren. Mit der Installation des Msi-Pakets alleine ist es in der Regel nicht getan.

Als erstes besteht eine Abhängigkeit zu WMF 4.0, die es eigentlich nicht geben sollte. Unter Linux kann sie auch nicht bestehen. Der Grund dürfte die neuerdings eingebaute „Windows-Kompabibilität“ sein, die Anwendern unter Windows auch mit PowerShell Core z.B. den Zugriff auf die Registry, den Umgang mit Freigaben oder ein Stop-Computer erlaubt. Aber nur unter Windows.

Also, zuerst WMF 5.1 und davor gegebenenfalls .NET Framework 4.7.2 oder eine aktuellere Version installieren (theoretisch tut es auch .NET Framework 4.5.2).

Die nächste Abhängigkeit besteht in der Installation der Universal C Runtime. Sie wird über ein Update installiert:

https://support.microsoft.com/de-de/help/2999226/update-for-universal-c-runtime-in-windows

Danach lässt sich PowerShell Core 6.1.2 zwar über das Msi-Paket installieren, aber leider noch nicht starten. Oder genauer, die Anwendung pwsh.exe startet, bricht aber gleich wieder mit einer Fehlermeldung ab, da eine Dll-Datei nicht vorhanden ist.

Da sich das Fenster in Sekundenbruchteilen wieder schließt, muss man einen kleinen „Trick“ anwenden und pwsh.exe in der Windows PowerShell per Start-Process starten und die Fehlermeldungen in eine Datei umleiten:

Start-Process -FilePath "C:\Program Files\PowerShell\6\pwsh.exe" -RedirectStandardError .\errors.txt

Es stellt sich heraus, dass die Datei hostfxr.dll nicht auf dem aktuellen Stand ist.

Um es kurz zu machen, durch die Installation des Windows 7-Updates KB2533623 wird auch dieses kleine Problem gelöst. Achtet aber darauf, dass es die 64-Bit-Version des Updates für ein 64 Bit-Windows 7 bzw. die entsprechende 32-Bit-Version ist.

Nach dem das Update installiert wurde, ist ein Neustart erforderlich. Danach lässt sich PowerShell Core auch unter Windows 7 starten.

Für mich widerspricht diese Abhängigkeit (unter Windows) zu WMF 4.0, einer Universal Runtime-Dll und einem Update ein wenig der ursprünglich einmal kommunizierten Aussage, dass PowerShell Core einfach eine portable Anwendung ist, die wie jede andere portable Anwendung lediglich über die Anwendungsdatei gestartet werden muss. Unter Linux gibt es diese Abhängigkeiten natürlich nicht.

Und da wir gerade dabei sind. Wer braucht wirklich den mit der Version 6.1 eingeführten „Kompatibilitätsmodus“ für Windows, durch den sich auch die meisten der bei Windows Server mitgelieferten Module auch in einer PowerShell Core-Session laden lassen? Es ist offenbar für einen Großkonzern doch nicht ganz so einfach neue Wege zu gehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.