Announcing the PowerShell 7.0 Release Candidate

Joey Aiello

Joey

After 6 previews, we’re happy to announce the release of the PowerShell 7 Release Candidate (RC). Whether you’ve been running PowerShell Core since our first alpha releases or you’ve been clinging to Windows PowerShell for backwards compatibility, 7.0 delivers a host of improvements to make your life better.

This is a “go live” release, which means that it is officially supported in production until the release of PowerShell 7 General Availability (GA) next month. (Note: we reserve the right to move this day if any significant issues arise that require us to ship an RC2.) We hope this encourages more folks to use RC with their production workloads so that we can correct any problems before we release GA.

For more detailed information on installing PowerShell 7, check out our installation docs.

Why is PowerShell 7 so awesome?

While we’ll be going into more detail on these new features when we release GA next month, here’s a quick rundown of some of the most exciting stuff we’re delivering in PowerShell 7.

  • .NET Core 3.1 (LTS)
  • ForEach-Object -Parallel
  • Windows compatibility wrapper
  • New version notification
  • New error view and Get-Error cmdlet
  • Pipeline chain operators (&& and ||)
  • Ternary operator (a ? b : c)
  • Null assignment and coalescing operators (?? and ??=)
  • Cross-platform Invoke-DscResource (experimental)
  • Out-GridView, -ShowWindow and other legacy GUI cmdlets are back on Windows
  • A ton of awesome quality-of-life improvements too numerous to list out here

For more info on these features and how some of them work, we’ll have release notes available next month. In the meantime, check out these preview blogs that have introduced and highlighted each feature as it was released:

Working with the .NET team

With the 7.0 previews, we’ve worked more closely with the .NET team than ever, not only tracking with .NET Core 3.0 and 3.1 previews, but working hand-in-hand with .NET developers to improve the performance of PowerShell. Compared to years past where moving to versions of .NET could be a troublesome process, moving from .NET Core 2.1 to 3.0 was relatively easy, and the move up to 3.1 was completely painless. We intend to continue taking advantage of new .NET features coming in .NET 5 and beyond that we can use to make PowerShell 7 even better.

And at the request of the .NET team and community, we’ve also worked to include PowerShell as part of the .NET SDK Docker containers, enabling applications developers to write cross-platform build, test, and deployment scripts for their cross-platform .NET applications.

.NET SDK Docker container image

Beginning with .NET Core 3.0, the .NET team began including PowerShell Core in their .NET SDK Docker images. This is great for any .NET Core developers building cross-platform applications, enabling them to write their build, test, and deployment scripts in a single scripting language (PowerShell!), irrespective of platform or whether they’re running locally or in a CI/CD solution like Azure Pipelines.

The .NET Core 3.1 SDK images will be updated with PowerShell 7.0 RC at their next regularly scheduled release, some time in January. Given our intent to synchronize with .NET’s support lifecycle, expect these image updates to continue.

.NET global tool

.NET global tools are an easy way to install special NuGet packages as full-blown applications for users who already have the .NET SDK installed on their machines. Simply run dotnet tool install --global powershell on any OS and you’ll get a pwsh binary to run in your environment. Update to new versions just as easily with dotnet tool update --global powershell.

Our global tool release marks another great interaction with the .NET team: they reached out proactively to ask us to build the package so that we were able drive feedback into the development of global tools as .NET previews were being released.

And as with the SDK container images, the global tool for 7.0 RC is already available. Note that due to the way versioning works in NuGet, you’ll have to use this specific install command until GA is released:
dotnet tool install --global PowerShell --version 7.0.0-rc.1
If you’re upgrading from a prior global tool install, use:

dotnet tool update --global PowerShell --version 7.0.0-rc.1

Where can I give feedback?

Given this is the last release before we move to GA, we highly encourage everyone to get the PowerShell 7 RC a test drive to ensure that we have not introduced any blocking bugs or regressions. File any issues you find on our GitHub.

Thanks!

Thanks for continuing to support PowerShell and our community! We hope you enjoy all of the new features and improvements in PowerShell 7.

Joey Aiello
Program Manager, PowerShell

4 comments

Leave a comment

  • Avatar
    ALIEN Quake

    Hi!

    The commit compare: github.com/PowerShell/PowerShell/compare/v7.0.0-rc.1…master shows over 60 commits which are not included in GA. Is this was intentional?

    EDIT: The url parser at this page can’t properly parse url’s with three dots.

  • Avatar
    Andrew Stanton

    Can PS7 load all my 5.1 modules without me having to do some weird or effort intensive things? I’d just like to replace the 5.1 that Windows 10 has instead of having a bunch of versions of powershell on a machine.

    I would have thought that having PS6 be cross platform that would have included the existing windows users, but it left us hanging without any clear direction other than the implication that we should just rewrite everything (and maintain two versions of powershell modules).