„Verwendet PowerShell 7, wann immer es möglich ist, aber DONT USE 2.0!“ Das war eine der Antworten, die Steve Lee, seines Zeichens Leiter von Microsofts PowerShell Engineering Team, auf Fragen der Community über die weitere Entwicklung von PowerShell 7 gab. Lee war zum PowerShell 7 Launch Event in Wien am 7. Juli 2020 live aus Redmond als „Special Guest“ zugeschaltet.
Die PowerShell Usergroup Austria hatte zu einer kleinen Präsentation rund um die im März 2020 veröffentlichte PS7 Version eingeladen. Eine Handvoll Interessierter waren tatsächlich „analog“ in den Räumen der ITLS Training und Consulting GmbH in Wien-Favoriten erschienen. Rund 25 Teilnehmer schalteten sich online in das virtuelle Meeting ein. Österreichs drei PowerShell MVPs Roman Stadlmair, Patrick Grünauer und Patrick Wahlmüller präsentierten zunächst einige der Neuheiten zu PS7.
Das gesamte Meeting mit allen Demos lässt sich unter diesem LINK nachträglich im Video anschauen und -hören (Minutenangaben zu den jeweiligen Passagen im Folgenden).
Alle verwendeten Präsentationen und Script Files stehen auf Github bereit zum DOWNLOAD
PS7 Ökosysteme
Roman startete seinen Vortrag über das PowerShell7 Ökosystem (im Video ab Minute 4.00) mit einem kleinen historischen Überblick zur Entwicklung von PowerShell seit 2006. Auf „allen Plattformen tut sich wahnsinnig viel, aktuell sind wir jetzt gerade bei PS 7.02“.
Von den Ökosystemen um PS7 „wissen viele vielleicht gar nicht, dass es sie gibt“. Laut Roman gehören dazu der PS Scriptanalyzer (Details ab 6.20), die PS Readline (11.40), der VS-Code und die Windows Terminal Engine (13.30), die neue „Multiplattform, mit der man alle möglichen und unmöglichen Betriebssysteme im Hintergrund starten kann“. Hier lassen sich umfassende Anpassungen vornehmen: Nostalgiker können sich zB. eine „command-line“ im Retrostil anlegen, etwa in jener des legendären Heimcomputers C64. Alles in allem ist das Windows Terminal für alle Anpassungen ein „mächtiges Instrument“.
Beim VS-Code (16.40) gibt es „so viele Features, dass es mir schwer fällt, euch da eine Auswahl zu zeigen“. Zu Romans Lieblingen zählen etwa die Gliederung, Erweiterungen oder die Arbeitsbereiche. Eher negativ sei etwa das Debugging, das „manchmal geht, manchmal nicht“ (Beispiele ab 17.30).
PS 5.1 und PS7 im Praxiseinsatz side-by-side
Patrick Grünauer berichtete dann über die Möglichkeiten und Grenzen von PS 5.1 und PS7 im Praxiseinsatz side-by-side (ab Minute 20). Denn mit den verschiedenen Installationen „müssen wir leider leben“.
Patrick demonstrierte zunächst (ab 22.00) die verschiedene Installationswege, unterschiedliche Profile, das Remoting und Event-Logs. Darauf folgten Tipps zu Klassen und Module (28.00), etwa über deren Kompatibilität. Ein Modul funktioniert derzeit definitiv nicht: Azure Active Directory (29.25). Die Office 365 Migration funktioniert, so Patrick, hingegen bestens.
Anschließend informierte Patrick über die Möglichkeiten und Grenzen (ab 30.23) – etwa am lustigen Beispiel, ob „Cortana spricht (5.1) oder nicht (7)“. Bei den Skripts gibt es ebenfalls Probleme, die „funktionieren im PS7 nicht immer so wie man es will beziehungsweise, wie sie unter PS5 funktionieren“ (ab 34.00). Hingegen gibt es bei den „PS7 Cmdlet“ Verbesserungen (Demos ab 37.48). zB gibt es nun einen permanenten ping Auszug. Und PS7 ist nach von Patrick durchgeführten Messungen um einiges schneller als PS5.
Am Ende seiner Demonstrationen wies Patrick noch auf die mitunter verwirrenden Unterschiede beim Aufrufen der „Hilfe-Funktion“ zwischen PS5 und 7 hin (41.16).
Neue Features
Nach einer kurzen Pause wies Patrick Wahlmüller auf eine Reihe von Features hin, die es bis dato im PowerShell noch nie gegeben hat (ab Minute 53.45). Zu den Neuheiten, die erwähnt werden müssen, gehören für Patrick der „new error view“ (Details ab 01.02), die „new version notification“ (ab 01.05) oder der sehr coole neue „ternary operator“ (ab 01.12). Nachdem Patrick von der Zuschaltung aus Redmond unterbrochen worden war, setzte er nach dem Gespräch mit Steve Lee mit den Neuheiten in PS7 fort (im Video ab 01.47.25). Dazu gehören der „pipeline chain operators“ und „null conditional operators“.
Es tut sich viel, so Patrick, mittlerweile gibt es schon die PS7.1 Preview 5 (seit 6. Juli). PS7.1 soll dann voraussichtlich im Winter 2020 erscheinen, kurz nach dem Release von .NET 5. Schwer gearbeitet wird an PowerShell Get 3.0, Secrent Management Module, am VSCode-PowerShell, PSEditorServices, PSScriptAnalyzer 2.0, PowerShell Jupyter Kernel und platyPS vNext. Installation und Update soll auch vereinfacht werden, ein „paar native Shell Improvements sollen gemacht werden“, die Interactive User Experience soll verbessert und eine „Minimal PowerShell“ soll gemacht werden. Die Idee bei letzterem ist, dass man für sein PS-Skript nur jene Module mitbekommt, die notwendig sind. Patrick: „Eine coole Sache.“
Fragen an und Antworten von Steve Lee
Pünktlich wie vereinbart meldete sich dann für die Q & A Runde Steve Lee aus seinem „Homeoffice“ in den USA (ganze Runde im Video ab 01.13).
Die gestellten Fragen und Antworten (natürlich auf Englisch) gibt’s hier in Kurz-Fassung:
Deployment:
Plans for PS7 in the Store?
Steve: Working on it since last November.
Challenge Store app running in a sandbox in a folder. Problem for a shell 😞
Special case – App Team needs to get convinced
Best way for mass deployment on Servers?
Steve: Use MSI for deployment with well-known tools
Plan to publish PS7 to the update catalog – internal approval needed.
Using PowerShell:
The future of Classes in PS 7?
Steve: There is no plan to invest in classes in 7.1, maybe 7.2 but not sure, needs to be evaluated at that time.
Context: DSC was the trigger to introduce classes in PS.
Remoting:
Switch to SSH – any near time plans – Side-by-side with WinRM/DCOM?
Steve: Future of PS Remoting is most likely SSH. PS-Core has no WinRM.
Another project is OMI – (WMI on Linux) ==> not staffed anymore
Kerberos/NTLM Support missing
Current code is based on OpenSSL 1.0 😞 – OpenSSL 1.1 s not backward compatible. huge amount of work.
Linux ==> Windows Remoting Setup Gateway machine to Connect
Editor:
Is VS-Code the Standard Editor for PowerShell?
Steve: No ISE work for improving – only security issues.
USE VS-CODE!
Future:
Whats the story with .Net 5 and PowerShell?
Steve: 7.1 is already based on .NET 5, previews are shipped in sync.
.NET 5 roadmap is public ~ Nov 2020
.NET is to ship every year
When is PS7 going to replace PS5 and PS2 in Windows?
Steve: The plan EXISTS to remove PS2 since many years!!
DONT USE 2.0 – its there for application compatibility
PS7 is based on .net core, – doesnt have live-cycle of windows
Other windows Teams may push on this – no ideas
PS-TEAM Message: Use PS7 whenever possible, fallback is PS Windows 5.1
Build New Code based on PS7
Differences PS7 for macOS/Linux to Windows: Are features in nonWindows only?
Steve: PS7 as login-shell on nonWin
Linux ls delivers more info than PS Get-Childitem
Main message should be in sync over platforms but there may be small platform specific adaptions to enhance the
OS-experience.
New approach: Generating CmdLets for native commands: (i.e. call Kubernetes tools) to avoid writing seperate commandlets for each technology.
Why parallel on foreach object but not on foreach ($i in $is)?
Steve: Foreach has no parameters – so how trigger it ?
Was an active decision.
Runspaces !
LINK zum Nachschauen des Videos!