PowerShell Core 6.1: Wesentlich mehr Module und Cmdlets unter Windows verfügbar

    Setup für PowerShell Core 6.1Ein großes Defizit von Power­Shell Core 6.0 war die geringe Anzahl an mit­gelie­ferten Cmdlets. Viele der unter Windows bereits vor­han­denen Module ließen sich zudem nicht nutzen. Diesen Zustand ändert nun die Version 6.1 durch eine ver­besserte Kompa­tibi­lität. Die AD-Cmdlets funk­tio­nieren aktu­ell aber noch nicht.

    Das große Anliegen von PowerShell Core ist die Plattform­unab­hängigkeit. Dadurch lassen sich Rechner mit ver­schiedenen Betriebs­systemen einheitlich verwalten, etwa Macs oder Linux-PCs von Windows aus. Mit der Portierung auf macOS und Linux schrumpfte PowerShell Core aber auf den kleinsten gemein­samen Nenner.

    Keine Vorteile für Windows-Admins

    Gerade für Windows-Benutzer, die fast alle Kompo­nenten des Systems und zahl­reiche Anwen­dungen mit PowerShell steuern können, bedeutete das einen Rück­schritt, ebenso der Verlust der grafischen Entwicklungs­umgebung ISE. Daher überrascht es nicht, dass PowerShell Core 6 laut Microsoft zu rund 80 Prozent unter Linux eingesetzt wird.

    Für die Version 6.0 gab es zwar die Aussage, dass ein großer Teil der vor­han­denen PowerShell-Module mit Core kompatibel seien. Welche das genau sind, blieb unklar, und ihre Integration musste manuell über die Anpassung des Modulpfads erfolgen.

    PowerShell Core 6.1 mit Compatibility Pack

    PowerShell Core 6.1 enthält nun unter Windows das Compatibility Pack, das die abgespeckten APIs von .NET Core um viele Funktionen aus dem regulären .NET-Framework erweitert. Gleich­zeitig setzt es nun auf .NET Core 2.1 auf, das gegenüber der Version 2.0 deutliche Performance-Verbesserungen bringen soll.

    Fortschritte gibt es zudem bei der Integration der Module von Windows PowerShell, weil man sie nicht mehr selbst in den Pfad aufnehmen muss. PowerShell Core 6.1 berücksichtigt auto­matisch jene Module, die es unter

    $env:WinDir\System32\WindowsPowerShell\v1.0\Modules

    findet.

    Markierung von Modulen als Core-tauglich

    Freilich sind immer noch nicht alle davon für den Einsatz unter Core geeignet. Im Unter­schied zu bisher legt sich Microsoft nun aber fest, welche Module sich ver­wenden lassen. In Windows 10 1809 und Server 2019 werden die kompatiblen Module für Windows PowerShell als Core-tauglich markiert. Der Befehl

    Get-Module -ListAvailable

    zeigt standardmäßig nur diese an. Möchte man alle Module sehen, dann gibt man zusätzlich noch den Schalter SkipEditionCheck an. Dabei sieht man auch die Eigenschaft CompatiblePSEditions, die Aufschluss darüber gibt, unter welchen Editionen von PowerShell sich die jeweiligen Module einsetzen lassen.

    Get-Module zeigt nun auch an, unter welchen Editionen von PowerShell ein Modul einsetzbar ist.

    In älteren Versionen des OS weisen die Module von Windows PowerShell diese Markierung nicht auf, so dass man hier nicht erkennen kann, welche sich unter Core nutzen lassen.

    Das trifft natürlich auch auf Module zu, welche über die RSAT 1803 installiert werden, wie etwa jenes für Active Directory. Daher gilt es als inkompatibel mit Core. Laut Microsoft genießt es jedoch höchste Priorität, so dass abzuwarten bleibt, ob die RSAT für Windows 10 1809 hier Abhilfe schaffen.

    Der Import des Moduls für Active Directory führt aktuell zu einer Fehlermeldung.

    Viermal so viele Module verfügbar

    Die Auswirkungen der Komp­atibi­litäts­maß­nahmen sind unübersehbar. Während der Befehl

    Get-Module -ListAvailable  | measure -l

    unter PowerShell Core 6.0 nur 13 Module ausweist, stiegt diese Zahl unter 6.1 auf 53. Entsprechend verhält es sich bei den Cmdlets, wo

    (Get-Module -ListAvailable).ExportedCommands | measure -sum Count

    unter Core 6.0 nur 353 findet, während es auf einem frisch installierten Windows 10 Build 17744 nun 1295 sind. Microsoft reklamiert in der Ankündigung von PowerShell Core 6.1 sogar die Zahl von 1900 kompatiblen Cmdlets.

    Zahl der verfügbaren Cmdlets auf einem frisch installierten Windows 10 Build 17744

    Neben wesentlichen Thema der Kompatibilität mit bestehenden Modulen, die nach und nach auf 100 Prozent steigen soll, bringt die Version 6.1 noch weitere Neuerungen. Dazu zählt die Unterstützung der neuesten OS-Versionen, darunter auch Server 2019, sobald er erscheint.

    Integration mit AppLocker und Device Guard

    Hinzu kommt der Support für Whitelisting-Funktionen wie AppLocker und Device Guard, bei deren Aktivierung PowerShell Core nun ebenfalls in den Constrained Language Mode schalten kann. Dort stehen einige sprachliche Mittel nicht zur Verfügung, die als sicherheits­kritisch gelten, etwa der Zugriff auf COM-Objekte oder mehrere .NET-Typen.

    Der Installer fügt auf Wunsch einen Befehl für PowerShell Core 6.1 in das Kontextmenü des Explorers ein.

    Zu den kleineren, aber dennoch nützlichen Änderungen zählen zudem:

    • Das Setup bietet an, gleich das Remoting zu aktivieren. Außerdem fügt es optional einen Befehl für PowerShell Core in das Kontextmenü des Explorers ein.
    • Mit an Bord sind vier neue Cmdlets zur Bearbeitung von Dateien im Markdown-Format, die es unter Windows PowerShell nicht gibt. Außerdem wurde Test-Connection auf Core portiert.
    • Heftet man das Icon für PowerShell Core 6.1 an die Taskleiste, dann findet sich im Kontextmenü nun auch der Befehl Run as Administrator.
    • Der Befehl cd - führt zurück in das vorhergehende Verzeichnis, cd -- nach $HOME
    • Where-Object lässt sich jetzt mit dem Operator -NOT kombinieren, um über einen Filter bestimmte Einträge auszuschließen. So würde
      Get-ChildItem | where -Not IsReadOnly
      alle Dateien anzeigen, die keinen Schreibschutz haben.

    Verfügbarkeit und Installation

    PowerShell Core 6.1 kann für alle unter­stützten Plattformen von Github heruntergeladen werden. Das offizielle Release installiert sich nun unter $env:ProgramFiles\PowerShell\6\, während die Previews dafür $env:ProgramFiles\PowerShell\6-preview\ nutzten.

    Wie gewohnt kann PowerShell Core parallel zu Windows PowerShell installiert und verwendet werden.

    Keine Kommentare