PowerShell v7.6 LTS Release and why it matters

Two days ago, the new LTS version of PowerShell, 7.6, was released. In this short blog post, I will highlight its key features and improvements.

What’s LTS?

Long Term Servicing (LTS) release – An LTS release of PowerShell is an LTS release of .NET. Updates to an LTS release only contain critical security updates and servicing fixes that are designed to minimize impact on existing workloads. The current LTS release is PowerShell v7.6.0. The previous LTS release, PowerShell v7.4.14, is still supported until 10-Nov-2026.”

Source: https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle?view=powershell-7.5

Why should you care?

The current LTS will be supported until November 10, 2026. While this might seem far away, time flies, and why not update on time? 😉

What’s new?

The most notable improvements are:

  • Core Module updates:
    – PSReadLine
    – Microsoft.PowerShell.PSResourceGet
    – Microsoft.PowerShell.ThreadJob
  • Engine reliability fixes
    – Added PSForEach() and PSWhere() as aliases for the PowerShell intrinsic methods Where() and Foreach()
    – Make SystemPolicy public APIs visible but no-op on Unix platforms, so that they can be included in PowerShellStandard.Library
    – Update DnsNameList for X509Certificate2 to use X509SubjectAlternativeNameExtension.EnumerateDnsNames() method
    – Fixed stderr output of console host to respect the NO_COLOR environment variable
  • Native command handling improvements
  • Tab completion consistency improvements
    – Improved path completion across providers
    – Added value completion for parameters of several cmdlets
    – Enabled completes in more contexts and scopes
    – Added completion of modules by their shortname
  • Dependency updates aligned with .NET 10
  • Added features to existing commands
    – Added -Delimiter parameter to Get-Clipboard
    – Added the parameter Register-ArgumentCompleter -NativeFallback to support registering a cover-all completer for native commands
    – Treat -Target as literal in New-Item
    – Added -ExcludeModule parameter to Get-Command
    – Improved Start-Process -Wait polling efficiency
  • The following features have been converted to mainstream features:
    – PSFeedbackProvider
    – PSNativeWindowsTildeExpansion
    – PSRedirectToVariable
    – PSSubsystemPluginModel

Breaking changes

PowerShell 7.6 includes a small number of breaking changes intended to improve long-term consistency.

  • Converted -ChildPath parameter to string[] for Join-Path cmdlet. Allows user to give an array of child paths and avoid the extra usage with -AdditionalChildPath.
  • WildcardPattern.Escape() now correctly escapes lone backticks.
  • Removed the trailing space from the GetHelpCommand trace source name.

Call to action and more information

Install PowerShell 7.6 now 🙂 For more information, see the following articles:

Future plans

Check this blog post for information on upcoming PowerShell versions, including v7.7 and beyond.

Wrapping up

And that’s all about the new LTS build of PowerShell, install now 🙂 I’m getting ready for my flight this weekend to Microsoft for the MVP Summit, can’t wait to see everyone again there and nerd out for a week. Have a lovely weekend!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.