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

  • Fix Group-Object output using interpolated strings (#20745) (Thanks @mawosoft!)
  • Fix Start-Process -PassThru to make sure the ExitCode property is accessible for the returned Process object (#20749) (#20866) (Thanks @CodeCyclone!)
  • Fix rendering of DisplayRoot for network PSDrive (#20793) (#20863)

Engine Updates and Fixes

  • Ensure filename is not null when logging WDAC ETW events (#20910) (Thanks @jborean93!)
  • Fix four regressions introduced by WDAC audit logging feature (#20913)

Build and Packaging Improvements

  • Bump .NET 8 to version 8.0.101
  • Update .NET SDK and dependencies for v7.4.1 (Internal 29142)
  • Update cgmanifest for v7.4.1 (#20874)
  • Update package dependencies for v7.4.1 (#20871)
  • Set the rollForwardOnNoCandidateFx in runtimeconfig.json to roll forward only on minor and patch versions (#20689) (#20865)
  • Remove RHEL7 publishing to packages.microsoft.com as it's no longer supported (#20849) (#20864)
  • Fix the tab completion tests (#20867)

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)