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

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)

Tests

  • Allow system lock down test debug hook to work with new WLDP API (fixes system lock down tests) (#18962)

Build and Packaging Improvements

Update package versions.

  • SHA256 Hashes of the release artifacts
    • hashes.sha256
  • D8CD0FE9D8462435D875B034D1DD3E0A1223CD6A62F867F4CE2FF4BE7D899491
    • powershell_7.3.1-1.deb_amd64.deb
  • C23B461A443AB87F9C11CE69FB625A01D7FD141F30CA42BEC7A86CEFED79EBAC
    • powershell-7.3.1-1.cm.x86_64.rpm
  • 9DC84952CEE2C3A8D644265A8E02EDE779DF986D222786182BDFE199CBD93149
    • powershell-7.3.1-1.rh.x86_64.rpm
  • BC5695F06121DBF8EBF56A842B8723E241FD5299BB34DB42B367A4157B9A9DA8
    • powershell-7.3.1-linux-alpine-x64.tar.gz
  • 043CBA55FC9208FCC51074D7174E295D4B46D2EDCABD03E107736BD6731DDF66
    • powershell-7.3.1-linux-arm32.tar.gz
  • 3AF65D5DB14D3B8D2C7F1E756821B036ED8629CC4BC59F7F6B260F6AF4DA72CA
    • powershell-7.3.1-linux-arm64.tar.gz
  • F0E03A128171E596A2387D86EF659F3A09D3700BE900D62BDEA3156D005EDA68
    • powershell-7.3.1-linux-x64.tar.gz
  • 68C2C0531A6796871DD7341B66C7085DDCC70570EB619DA3DBED769BCE4EE371
    • powershell-7.3.1-linux-x64-fxdependent.tar.gz
  • D6032C02D57DCBC3FAE5C0D2572DEA5682504811061BD1635A07B70B137E21FA
    • powershell-7.3.1-osx-arm64.pkg
  • ADB1E56FFF1E3B4BD1403E75089B92EF8B7432DCA6FE48CF94ED84A16936CD7E
    • powershell-7.3.1-osx-arm64.tar.gz
  • 66AE3E155043011A0CB7025E748C385C101C464FC105F39818DA678B702154BD
    • powershell-7.3.1-osx-x64.pkg
  • B6C8D4F8ED0CD1854CD00FE8A7816428093E71FDDC30546A3406C07F409C02AE
    • powershell-7.3.1-osx-x64.tar.gz
  • 18529E2EF589DACFA62B3ADAA0640EDABF5F31FE4CC3D484D5060F93166E6156
    • PowerShell-7.3.1-win.msixbundle
  • F2C9247D6108B42EBCD489FC2EF52078EB450CF7282E4B91B9525A334F38B233
    • PowerShell-7.3.1-win-arm32.zip
  • D808FBBB91E73F39BA1629D4339F2CC6E73D0C1A51EA5FF91BA8F68861B11A5E
    • PowerShell-7.3.1-win-arm64.zip
  • F86C1DA8896144A0D913B85B58157B419D3A89FF357EA191081D58DE944DE354
    • PowerShell-7.3.1-win-fxdependent.zip
  • 12A4E9100CF6448583D205714B262A0C3EA0CA4F2056ABEFD6831A6AFB923160
    • PowerShell-7.3.1-win-fxdependentWinDesktop.zip
  • 9938F6F95BBD0341B1279BA859B4BF643924759534DC6B527E15528E736E3149
    • PowerShell-7.3.1-win-x64.msi
  • CAD0026DF877F1B195B87AAE1858E8BC8BA759C19B7440CD62E1F5432665519F
    • PowerShell-7.3.1-win-x64.zip
  • 997EDF93ED570C0E6559588F2E3F52CB2B043535D7022128F2A734A2D904E3F5
    • PowerShell-7.3.1-win-x86.msi
  • 0266C3BCF23A35E5400C8DA28BE951986454D33973E56274D0E6217B0C56829A
    • PowerShell-7.3.1-win-x86.zip
  • 9FA3E39DC072093F0AB86EC75C91199D91B526BEFCE80722D6FB5F6614C21547