As we come to in the direction of the top of 2023, we’re excited to announce the overall availability of PowerShell 7.4!
This launch is constructed on .NET 8 and equally,
is our newest Lengthy Time period Assist (LTS) launch supported for 3 years.
We wish to thank our group and lots of contributors for his or her invaluable assist figuring out points,
partaking in discussions in our repository, offering fixes and new options,
and serving to us ship a top quality launch!
How do I get it?
Since PowerShell 7 is supported on Home windows, Linux, and macOS, there are a
number of methods to get it.
Should you put in the earlier PowerShell 7 secure launch (7.3) by way of the Home windows Retailer or MSI (and opted into
you can be routinely up to date to 7.4 GA.
This launch continues to concentrate on enhancing the shell expertise and addressing
generally reported buyer and accomplice points.
Listed here are just a few highlights:
This launch contains PSResourceGet, which itself
was made typically obtainable earlier this yr.
PSResourceGet replaces PowerShellGet (though the 2 work side-by-side for legacy scripts) and the place we are going to make investments future
enhancements to the PowerShell module ecosystem.
This launch focuses on a brand new codebase that’s extra maintainable and likewise offers higher efficiency.
As well as, this module makes use of a unique set of cmdlets to permit for breaking adjustments that present a extra intuitive person expertise.
This launch contains the most recent PSReadLine launch
that comprises various enhancements and bug fixes.
New secure options
The PowerShell Committee reviewed the experimental options we’ve had within the preview releases together with
group suggestions (points) and telemetry indicating the characteristic was used and never disabled and determined that
the next options had been able to be deemed secure for this launch:
This characteristic allows PowerShell 7 to stick to WDAC Audit mode and log occasions into the Home windows Occasion Log.
On this mode, PowerShell runs scripts in Full Language Mode, however logs occasions if there can be
a distinction in habits in System Lockdown mode.
This makes it simpler for directors to deploy PowerShell 7 in environments which have System Lockdown mode enabled
by understanding what scripts would must be modified to run in that mode.
A typical suggestions from customers is that with objects rendered as tables, it was not clear when a header
label was not a property of the item.
For instance, when utilizing
Get-Course of, you’ll see a column with the header
CPU(s)to point the
quantity of cpu seconds utilized by that course of.
Nevertheless, if you happen to tried to entry that property, you’d discover it’s really known as simply
was added to the header to point that it was in seconds.
This new characteristic means that you can enhance the header label to make it clear that it’s not a property of the item.
The default ornament merely renders the header label in italics.
That is continuation of a characteristic we first added in 7.3.
A significant distinction between Home windows and non-Home windows is how arguments are parsed significantly when quotes are concerned.
As extra Open Supply command-line instruments are getting used on Home windows, we wish to make it possible for PowerShell
can go arguments to these instruments in a method that works as anticipated.
Nevertheless, many legacy command-line instruments on Home windows don’t deal with arguments within the business normal method.
As such, a
Home windowsmode for
$PSNativeCommandArgumentPassingparticular instances some identified instruments to fallback to how
it labored with Home windows PowerShell whereas fashionable instruments the brand new
Legacymode is offered for those who must help legacy instruments that don’t work with the
That is one other continuation of a characteristic we first added in 7.3.
This characteristic means that you can deal with a non-zero exit code from a local command as an ErrorRecord that will come from a cmdlet.
This lets you set
Ceaseand have PowerShell cease execution whether or not a cmdlet had an error
or a local command had a non-zero exit code.
This simplifies scripts that beforehand must test
$LASTEXITCODEafter execution of a local command or wrap it in a helper perform.
This characteristic means that you can protect the byte stream when piping to or from a local command.
Beforehand, all streams had been transformed to strings when piping to or from a local command and thus misplaced the unique byte stream.
That is helpful for instruments that anticipate binary enter similar to
There are nonetheless various experimental featues on this launch pending extra person suggestions earlier than we are able to promote them to secure.
For instance, we proceed to iterate on the Suggestions Supplier
mannequin as we get extra suggestions from customers and companions who implement it.
There are just a few Breaking Modifications
on this launch that you need to be conscious of though we anticipate them to be uncommon.
One that might have an effect on some customers is the brand new
-ProgressAction widespread parameter.
Just like different widespread parameters, the brand new
-ProgressAction parameter is routinely obtainable to cmdlets and superior capabilities.
This parameter means that you can management how progress is reported for a cmdlet or superior perform name.
Beforehand, you would need to set
SilentlyContinue to suppress progress after which restore it to its earlier worth.
We are going to proceed to concentrate on making PowerShell a terrific shell atmosphere subsequent yr with PowerShell 7.5.
As standard, we’ll proceed to deal with points and bugs reported by our group and companions in addition to undertake the most recent .NET 9 preview releases.
Particular staff investments shall be mentioned in a separate weblog submit early subsequent yr.
Thanks once more to our group and companions for his or her continued help and suggestions!