It may be shuttering its events, but the release door at Microsoft has continued flapping with the emission of admin darling PowerShell 7.
We first looked at the preview of PowerShell 7 almost a year ago and found little to complain about. Frankly, the same can be applied to today's release – with improvements in compatibility, some handy new operators and parallelisation, the open-source tool is a viable replacement for the venerable Windows-only PowerShell of old.
Admins seem to like it too, and it is currently hovering at number 38 in the TIOBE Programming Community Index (an indicator of the popularity of programming languages).
A lurch in strategy occurred some three years ago, with the cross-platform PowerShell Core 6 (build on .NET Core) which brought Microsoft's scripting tool to macOS and Linux. A release under an open-source (MIT) licence soon had eager beavers contributing code, tests and documentation.
PowerShell 7 has ditched the "core" moniker and made the move from .NET Core 2.x to 3.1, the latest and greatest and, most importantly, most backwards compatible version of the open source framework. The move has meant that PowerShell 7 is a good deal more backwards compatible than its predecessor.
And for that special script that still refuses to run? Joey Aiello, project manager for PowerShell, told The Register: "We've introduced a compatibility layer in PS 7 that implicitly uses Windows PowerShell under the hood for known-incompatible modules."
The platform list is impressive. As well as Windows 7, 8.1 and 10 (on x64), pretty much every Windows Server version is supported as well as macOS and many mainstream Linux distros (including RHEL, Ubuntu and Debian). Arm32 and Arm64 flavours of Debian and Ubuntu also get a look-in.
The gang is leaving the old Windows PowerShell alone for the time being, with the legacy incarnation receiving only "high-impact servicing and security fixes", according to Aiello. He went on to tell us: "We may eventually decide to make Windows PowerShell a removable feature for those users who prefer to have only one PowerShell (the latest available) on their machines."
From Microsoft's point of view, PowerShell 7 is to be "the one, true PowerShell going forward". Much like the .NET Core gang have done as .NET 5 approaches.
It is due to the hitching of PowerShell's wagon to .NET Core that Long Term Servicing (LTS) releases will match that of the framework. .NET Core 3.1 is a designated LTS release and so enjoys three years of support from its December 2019 debut. Support for PowerShell 7 also ends in December 2022, possibly raising an eyebrow from enterprises that don't like change.
The latest Long Term Servicing Channel (LTSC) version of Windows 10, for example, will keep on rocking until 2029.
Aiello told us the team hasn't "had any major asks yet from customers to extend beyond the current three years" and that they're "ultimately bound to the LTS considerations of the .NET Core team".
Increasing the cadence of updates has been a thing at Microsoft of late. The Azure Kubernetes Service, for example, will only support three minor versions of Kubernetes – the current minor version and the two previous minor versions.
Going forwards, the PowerShell team intends to move to an annual release cadence that is better aligned with the .NET Core. Previews should drop roughly once a month. ®