PowerShell 7 RC Released, here’s what’s new

Microsoft is releasing a new version of the next gen PowerShell scripting language. Interesting users can get the PowerShell 7 Release Candidate. It contains a number of new features and many bug fixes from both the community as well as the PowerShell team.

PowerShell Logo Banner

PowerShell is an advanced form of command prompt. It is extended with a huge set of ready-to-use cmdlets and comes with the ability to use .NET framework/C# in various scenarios. Windows includes a GUI tool, PowerShell ISE, which allows editing and debugging scripts in a useful way.

PowerShell 7 is the first command-line shell and scripting language package based on .NET Core 3.0. It can attain compatibility with 90+% of the inbox Windows PowerShell modules by leveraging changes in .NET Core 3.0 that bring back many APIs required by modules built on .NET Framework so that they work with .NET Core runtime.

Microsoft expects General Availability of PowerShell 7 in January as their first Long Term Servicing release.

Between the Release Candidate and General Availability, Microsoft will only accept critical bug fixes and no new features will be included. For that release, some Experimental Features will be considered design stable and no longer be Experimental. This means that any future design changes for those features will be considered a breaking change.

Key features of 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

New Features in PowerShell 7 RC

Breaking Changes

  • Make update notification support LTS and default channels (#11132)

Engine Updates and Fixes

  • Improvements in breakpoint APIs for remote scenarios (#11312)
  • Fix PowerShell class definition leaking into another Runspace (#11273)
  • Fix a regression in formatting caused by the FirstOrDefault primitive added in 7.0.0-Preview1 (#11258)
  • Additional Microsoft Modules to track in PS7 Telemetry (#10751)
  • Make approved features non-experimental (#11303)
  • Update ConciseView to use TargetObject if applicable (#11075)
  • Fix NullReferenceException in CompletionCompleters public methods (#11274)
  • Fix apartment thread state check on non-Windows platforms (#11301)
  • Update setting PSModulePath to concatenate the process and machine environment variables (#11276)
  • Bump .NET Core to 3.1.0 (#11260)
  • Fix detection of $PSHOME in front of $env:PATH (#11141)

General Cmdlet Updates and Fixes

  • Fix for issue on Raspbian for setting date of file changes in UnixStat Experimental Feature (#11313)
  • Add -AsPlainText to ConvertFrom-SecureString (#11142)
  • Added WindowsPS version check for WinCompat (#11148)
  • Fix error-reporting in some WinCompat scenarios (#11259)
  • Add native binary resolver (#11032) (Thanks @iSazonov!)
  • Update calculation of char width to respect CJK chars correctly (#11262)
  • Add Unblock-File for macOS (#11137)
  • Fix regression in Get-PSCallStack (#11210) (Thanks @iSazonov!)
  • Avoid automatically loading the ScheduledJob module when using Job cmdlets (#11194)
  • Add OutputType to Get-Error cmdlet and preserve original TypeNames (#10856)
  • Fix null reference in SupportsVirtualTerminal property (#11105)

Code Cleanup

  • Change comment and element text to meet Microsoft standards (#11304)

Tests

  • Make unreliable DSC test pending (#11131)

Build and Packaging Improvements

  • Fix Nuget package signing for Coordinated Package build (#11316)
  • Update dependencies from PowerShell Gallery and NuGet (#11323)
  • Bump Microsoft.ApplicationInsights from 2.11.0 to 2.12.0 (#11305)
  • Bump Microsoft.CodeAnalysis.CSharp from 3.3.1 to 3.4.0 (#11265)
  • Updates packages for Debian 10 and 11 (#11236)
  • Only enable experimental features prior to RC (#11162)
  • Update macOS minimum version (#11163)
  • Bump NJsonSchema from 10.0.27 to 10.0.28 (#11170)

Documentation and Help Content

  • Refactor change logs into one log per release (#11165)
  • Fix FWLinks for PowerShell 7 online help documents (#11071)

PowerShell 7 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.

Source: Microsoft

Leave a Reply

Your email address will not be published. Required fields are marked *