Was bringt PowerShell Core 6.0?

PowerShell Core ist die plattformneutrale Variante der Windows PowerShell. Sie läuft nicht nur auf Windows, sondern auch Linux und MacOS.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 3 Min.
Von
  • Dr. Holger Schwichtenberg

PowerShell Core ist die plattformneutrale Variante der Windows PowerShell. Sie läuft nicht nur auf Windows, sondern auch Linux und MacOS.

Außer der Windows PowerShell (WPS) entwickelt Microsoft nun auch eine Core-Version der PowerShell (PSCore) als Open-Source-Projekt auf Github. Während Erstere nur unter Windows läuft, gibt es die PowerShell Core auch für Linux und MacOS. Die Windows PowerShell steht derzeit bei Versionsnummer 5.1. PowerShell Core beginnt mit der Versionszählung bei 6.0. Sie basiert auf dem plattformunabhängigen .NET Core mit der CoreCLR, während die klassische PowerShell auf dem .NET Framework 4.x aufsetzt, dass es nur für Windows gibt.

Im Gegensatz zu der Entscheidung, beim Übergang von .NET Framework zu .NET Core bei den Versionsnummern wieder bei 1.0 zu beginnen, zählt Microsoft bei PowerShell Core weiter. Man kann aber nicht ausschließen, dass das Unternehmen das noch ändern wird.

Die Windows PowerShell 5.1 ist weit mächtiger als die PowerShell Core 6.0, weil PowerShell Core einen Neustart des PowerShell-Entwicklungsprojekts in Hinblick auf Plattformunabhängigkeit darstellt. In PowerShell Core fehlen viele Commandlets der Grundausstattung der Windows PowerShell (z.B. für EventLog, Clipboard, Transaktionen sowie die klassischen WMI-Commandlets und Out-GridView) und es sind bisher keine Erweiterungsmodule verfügbar.

Zudem sind die Linux- und die MacOS-Version von PowerShell Core 6.0 auch gegenüber ihrer Windows-Entsprechung in den Funktionen nochmals reduziert. So bietet die aktuelle Beta-Version von PowerShell Core auf Windows 460 Commandlets und Funktionen, während unter Linux und MacOS nur 351 verfügbar sind (zum Teil, wenn es dort keine äquivalente Systembausteine gibt). So fehlen zum Beispiel:

  • Remove-LocalUser, Get-LocalGroup, Enable-LocalUser u.a. Commandlets für lokale Benutzer und Gruppen
  • Rename-Computer, Restart-Computer, Stop-Computer, Get-ComputerInfo
  • Alle Commandlets für Dienste wie Get-Service, Start-Service, Stop-Service etc.
  • Alle CIM-Commandlets wie Get-CimInstance, Remove-CimInstance etc.
  • Nutzung von COM-Objekten mit den Parameter -com im Commandlet New-Object
  • Alle File-Catalog-Commandlets (New-FileCatalog und Test-FileCatalog)
  • Alle Commandlets für Performance-Counter wie Get-Counter und Export-Counter
  • Commandlets für Zugriffsrechtelisten: Get-Acl und Set-Acl

PowerShell Core auf Ubuntu (Abb. 1)

PowerShell Core auf MacOS (Abb. 2)

PowerShell Core auf Windows (Abb. 3)

Der Wert der PowerShell Core unter Linux und MacOS liegt zunächst also allenfalls in den mächtigen Pipelining- sowie Ein- und Ausgabe-Commandlets. Für konkrete Zugriffe auf das Betriebssystem gibt es hingegen für die PowerShell Core unter MacOS und Linux noch fast keine Commandlets. Man wird also hier immer klassische Linux- und MacOS-Kommandozeilenbefehle mit zeichenkettenbasierter Verarbeitung in die PowerShell einbinden.

Beispiel: Die von cat gelieferte Benutzerliste soll gefiltert und sortiert werden

cat /etc/passwd | ConvertFrom-CSV -Delimiter ':' -Header Name,Passwd,UID,GID,Description,Home,Shell | Where-Object name -like "H*" | Sort-Object Name | Format-Table


()