Built on the .NET Framework, Windows PowerShell allows IT professionals to manage computers via commands or scripts, improving productivity through system automation.

Installation Process:

After the package is installed, run pwsh from a terminal. Specific procedures for different Linux distributions can be found here.

Officially supported platform releases for PowerShell 7.1:

  • Ubuntu 16.04/18.04/20.04 (including ARM64)
  • Ubuntu 19.10 (via Snap package)
  • Debian 9/10
  • CentOS and RHEL 7/8
  • Fedora 30
  • Alpine 3.11+ (including ARM64)

What's New

General Cmdlet Updates and Fixes

  • Revert "Adjust PUT method behavior to POST one for default content type in WebCmdlets" (#21049)
  • Fix regression with Get-Content when -Tail 0 and -Wait are both used (#20734) (Thanks @CarloToso!)
  • Fix Get-Error serialization of array values (#21085) (Thanks @jborean93!)
  • Fix a regression in Format-Table when header label is empty (#21156)

Engine Updates and Fixes

  • Revert the PR #17856 (Do not preserve temporary results when no need to do so) (#21368)
  • Make sure the assembly/library resolvers are registered at early stage (#21361)
  • Handle the case that Runspace.DefaultRunspace is null when logging for WDAC Audit (#21344)
  • Fix PowerShell class to support deriving from an abstract class with abstract properties (#21331)
  • Fix the regression when doing type inference for $_ (#21223) (Thanks @MartinGC94!)

Previous Release Notes:

Security Fixes

  • Block getting help from network locations in restricted remoting sessions (Internal 27698)

Build and Packaging Improvements

  • Bump .NET SDK version to 7.0.401
  • Update man page to match current help for pwsh (#20249)

Previous Release Notes:

PowerShell 7.3 is the next stable release, built on .NET 7.0.

PowerShell 7.3 includes the following features, updates, and breaking changes.

Breaking Changes and Improvements

  • In this release, Windows APIs were updated or removed for compliance, which means that PowerShell 7.3 doesn't run on Windows 7. While Windows 7 is no longer supported, previous builds could run on Windows 7.
  • PowerShell Direct for Hyper-V is only supported on Windows 10, version 1809 and higher.
  • Test-Connection is broken due to an intentional breaking change in .NET 7. It's tracked by #17018
  • Add clean block to script block as a peer to begin, process, and end to allow easy resource cleanup (#15177)
  • Change default for $PSStyle.OutputRendering to Host
  • Make Out-String and Out-File keep string input unchanged (#17455)
  • Move the type data definition of System.Security.AccessControl.ObjectSecurity to the Microsoft.PowerShell.Security module (#16355) (Thanks @iSazonov!)
  • Before this change, a user doesn't need to explicitly import the Microsoft.PowerShell.Security module to use the code properties defined for an instance of System.Security.AccessControl.ObjectSecurity.
  • After this change, a user needs to explicitly import Microsoft.PowerShell.Security module in order to use those code properties and code methods.

Tab completion improvements

  • PowerShell 7.3 includes PSReadline 2.2.6, which enables Predictive IntelliSense by default. For more information, see about_PSReadLine.
  • Fix tab completion within the script block specified for the ValidateScriptAttribute. (#14550) (Thanks @MartinGC94!)
  • Added tab completion for loop labels after break/continue (#16438) (Thanks @MartinGC94!)
  • Improve Hashtable completion in multiple scenarios (#16498) (Thanks @MartinGC94!)
  • Parameter splatting
  • Arguments parameter for Invoke-CimMethod
  • FilterHashtable parameter for Get-WinEvent
  • Property parameter for the CIM cmdlets
  • Removes duplicates from member completion scenarios
  • Support forward slashes in network share (UNC path) completion (#17111) (Thanks @sba923!)
  • Improve member autocompletion (#16504) (Thanks @MartinGC94!)
  • Prioritize ValidateSet completions over Enums for parameters (#15257) (Thanks @MartinGC94!)
  • Add type inference support for generic methods with type parameters (#16951) (Thanks @MartinGC94!)
  • Improve type inference and completions (#16963) (Thanks @MartinGC94!)
  • Allows methods to be shown in completion results for ForEach-Object -MemberName
  • Prevents completion on expressions that return void like ([void](""))
  • Allows non-default Class constructors to show up when class completion is based on the AST
  • Improve type inference for $_ (#17716) (Thanks @MartinGC94!)
  • Fix type inference for ICollection (#17752) (Thanks @MartinGC94!)
  • Prevent braces from being removed when completing variables (#17751) (Thanks @MartinGC94!)
  • Add completion for index expressions for dictionaries (#17619) (Thanks @MartinGC94!)
  • Fix type completion for attribute tokens (#17484) (Thanks @MartinGC94!)
  • Improve dynamic parameter tab completion (#17661) (Thanks @MartinGC94!)
  • Avoid binding positional parameters when completing parameter in front of value (#17693) (Thanks @MartinGC94!)

Engine Updates and Fixes

  • Add instrumentation to AmsiUtil and make the init variable readonly (#18727)
  • Fix support for NanoServer due to the lack of AMSI (#18882)
  • Adding missing guard for telemetry optout to avoid NullReferenceException when importing modules (#18949) (Thanks @powercode!)
  • Fix VtSubstring helper method to correctly check chars copied (#19240)
  • Fix ConciseView to handle custom ParserError error records (#19239)