Windows PowerShell ist ein mächtiges Werkzeug, das von vielen IT-Experten verwendet wird. Bis lang wurde PowerShell aber meist auf einem Windows System verwendet.
Im Gegensatz zu Windows PowerShell basiert PowerShell Core auf dem .Net Core Framework.
Mit PowerShell Core können Sie nun PowerShell Skripte auch auf Linux, Mac Os und natürlich weiterhin auf Windows Systemen ausführen.
Leider ist die Core Version noch nicht auf Windows Systemen vorinstalliert.
PowerShell Core Download und Installation
Der PowerShell Core Code ist OpenSource, was die Zusammenarbeit in der Community verstärkt und somit neue Releases schnell ermöglicht.
PowerShell Core können Sie auf der GitHub Seite herunterladen. Hier stehen Ihnen alle offiziellen Releases zum Download zur Verfügung.
PowerShell Core können sie parallel zu Windows PowerShell installieren.
Damit dies möglich ist, hat Microsoft für PowerShell Core pwsh.exe als Namen verwendet. PowerShell.exe steht weiterhin für Windows PowerShell.
So können Sie PowerShell Core und Windows PowerShell auf demselben Windows System laufen lassen.
Windows
Es gibt immer zwei Versionen, einmal die stable und einmal die preview Version.
Die meisten von uns die PowerShell Core mal testen möchten, können eine MSI Datei herunterladen und diese auf dem eigenen Betriebssystem installieren.
Laden Sie in GitHub unter „Get PowerShell“ das passende .msi für Ihr x86 oder x64 System herunter und starten Sie die MSI für die Installation von PowerShell.
PowerShell Core können Sie aber auch z.B. auf einem Windows IoT System oder im Windows Server Nano installieren.
Wie Sie diese Varianten installieren können, beschreibt Microsoft das ganze in Ihrer Dokumentation.
Linux
Wie Sie PowerShell Core unter Linux verwenden können Sie hier nachlesen.
MacOS
Wie Sie PowerShell Core unter MacOS verwenden können Sie hier nachlesen.
Verbesserungen in PowerShell Core 6.1
Es gibt einige Verbesserungen in PowerShell Core darunter auch die Performance Optimierung für verschiedene CMDLETS.
Schauen wir uns dazu ein paar bekannte PowerShell Befehle an.
Anbei ist eine Darstellung der Befehle und um wie viel Prozent diese schneller sind als unter Windows PowerShell.
Objekt | % schneller als Windows PowerShell |
Group-objekt | 66,2 % |
Sort-objekt | 16,6% |
Import-CSV | 74,9% |
JSON in PSObjekt kovertieren | 78,3 % |
Klein und Großschreibung
Da PowerShell keine Klein- und Großschreibung normalerweise macht, ist dies ein Problem für Linux Derivate.
PowerShell Core untersützt auch die Klein und Großschreibung.
Kompatibilität zu Windows PowerShell
PowerShell Core wurde so entwickelt das es kompatibel zu Windows PowerShell funktioniert. Trotz allem müssen nun nach und nach bestehende PowerShell Module konvertiert und angepasst werden.
Parallelbetrieb für PowerShell Core und Windows PowerShell
Da die PowerShell Core Anwendung den Namen pwsh.exe hat und nicht powershell.exe können Windows PowerShell und PowerShell Core auf dem selben System betrieben werden.
Unterstützung für WMI v2 nicht mehr WMI v1
Unter PowerShell Core können Sie nicht mehr die alten WMI v1 CMDLETs wie Get-WMIObjet usw. verwenden.
Stattdessen sollten Sie die neuen CIM-CMDlets nutzen.
WMI v1-Cmdlets
- Invoke-WmiMethod
- Register-WmiEvent
- Set-WmiInstance
WMI v2-Cmdlets
- Get-CimAssociatedInstance
- Get-CimClass
- Get-CimInstance
- Get-CimSession
- Invoke-CimMethod
- New-CimInstance
- New-CimSession
- New-CimSessionOption
- Register-CimIndicationEvent
- Remove-CimInstance
- Remove-CimSession
- Set-CimInstance
Grundlagen für Windows PowerShell und PowerShell Core
Sie möchten PowerShell effektiv nutzen aber Ihnen fehlen noch die wichtigen Grundlagen. Dann informieren Sie sich in zahlreichen kostenlosen Online Tutorials zum Thema PowerShell.
z.B. stellt die Microsoft Dokumentation eine sehr gute Grundlage dar um Powershell zu erlernen.
Wenn Sie PowerShell kompakt und kostenlos in einem Online Tutorial lernen möchten, dann finden Sie hier ein ausführliches PowerShell Tutorial von Linetwork.
Windows PowerShell Module für PowerShell Core
PowerShell Core unterstützt den .NET Standard 2.0 und somit auch viele PowerShell Module die für Windows PowerShell entwickelt wurden.
Microsoft portiert immer mehr PowerShell Module mit den .Net Stanard 2.0 so das immer mehr bekannte Module auch mit PowerShell Core funktionieren.
Zusätzlich wird mit PowerShell Core 6.1 das Windows Compatibility Pack mit installiert, so das Entwickler auch weiterhin Module aufrufen können sie standardmäßig nicht mit PowerShell Core ausführbar sind.
Für mehr Infos und Verbesserungen die kommen werden, können Sie sich auch im PowerShell Team Blog informieren.
Um zu überprüfen welche PowerShell Module mit PowerShell Core Kompatibel sind können dies mit Get-Module überprüfen.
Wenn Sie unter PSEdition „Core“ sehen, dann ist das Module kompatibel und kann auch unter PowerShell Core verwendet werden.
Ab Windows Update 1809 für Windows 10 und Windows Server 2019 sind viele PowerShell Module bereits mit der Core Version kompatibel.
Get-Module -ListAvailable
SSH unterstützen in PowerShell Core
Nun können Sie auch PowerShell nutzen um sich mit Clients über SSH zu verbinden.
Da SSH Clients die Zeichfolge user@host:port verwenden wurde diese für PowerShell angepasst.
Nun können Sie wie gewohnt mit der Enter-PSSession sich mit einem SSH Client verbinden.
Enter-PSSession -HostName user@host:2222
PowerShell Direct für Container bevorzugt PowerShell Core
Für die Verbindung mit VMs ohne Netzwerkverbindung unter Hyper-V wurde bis lang eine Windows PowerShell Instanz verwendet.
Nun versucht PowerShell Direct bevorzugt auf die pwsh.exe zuzugreifen, wenn diese nicht vorhanden ist, wird dann erst auf die powershell.exe ausgwichen.
PowerShell Direct erlaubt es mit einer VM Daten auszutauschen, ohne das die VM eine Netzwerkverbindung besitzt.
Fazit
In diesem Baitrag haben sie gelesen, das PowerShell Core ein weiterentwicklung von Windows PowerShell ist und immer weiter entwickelt wird.
Wie haben gelernt das Sie PowerShell Core parallel zu Windows PowerShell installieren und nutzen können.
Immer mehr bekannte Windows PowerShell Module sind in PowerShell Core nun ebenfalls verfügbar und weiter werden kommen.
Wir beobachten gemeinsam die Entwicklung und ich wünsche Ihnen schon jetzt viel Spaß bei Entwickeln Ihrer PowerShell Scripte unter PowerShell Core.
Ich wünsche Ihnen alles gute.
Aleksej Kusnir