Microsoft is releasing a new version of the next gen PowerShell scripting language. Interesting users can get the PowerShell 7 Release Candidate 3. It contains a number of new features and many bug fixes from both the community as well as the PowerShell team.
PowerShell is an advanced form of command prompt. It is extended with a huge set of ready-to-use cmdlets and comes with the ability to use .NET framework/C# in various scenarios. Windows includes a GUI tool, PowerShell ISE, which allows editing and debugging scripts in a useful way.
PowerShell 7 is the first command-line shell and scripting language package based on .NET Core 3.0. It can attain compatibility with 90+% of the inbox Windows PowerShell modules by leveraging changes in .NET Core 3.0 that bring back many APIs required by modules built on .NET Framework so that they work with .NET Core runtime.
Microsoft expects General Availability of PowerShell 7 in January as their first Long Term Servicing release.
Between the Release Candidate and General Availability, Microsoft will only accept critical bug fixes and no new features will be included. For that release, some Experimental Features will be considered design stable and no longer be Experimental. This means that any future design changes for those features will be considered a breaking change.
Key features of PowerShell 7
- .NET Core 3.1 (LTS)
ForEach-Object -Parallel
- Windows compatibility wrapper
- New version notification
- New error view and
Get-Error
cmdlet - Pipeline chain operators (
&&
and||
) - Ternary operator (
a ? b : c
) - Null assignment and coalescing operators (
??
and??=
) - Cross-platform
Invoke-DscResource
(experimental) Out-GridView
,-ShowWindow
and other legacy GUI cmdlets are back on Windows
What's new in PowerShell 7 RC 3
Breaking Changes
- Fix
Invoke-Command
missing error on session termination (#11586)
Engine Updates and Fixes
- Update the map between console color to
VT
sequences (#11891) - Fix SSH remoting error on Windows platform (#11907)
- Restore the
PowerShellStreamType
enum
with anObsoleteAttribute
(#11836) - Handle cases where
CustomEvent
was not initially sent (#11807) - Fix how COM objects are enumerated (#11795)
- Fix
NativeDllHandler
to not throw when file is not found (#11787) - Restore
SetBreakpoints
API (#11622) - Do not needlessly pass
-l login_name
or-p port
tossh
(#11518) (Thanks @LucaFilipozzi!) - Fix for
JEA
user role in virtual account (#11668) - Do not resolve types from assemblies that are loaded in separate
AssemblyLoadContext
(#11088)
General Cmdlet Updates and Fixes
- Sync current directory in
WinCompat
remote session (#11809) - Add
WinCompat
deny list support using a setting inpowershell.config.json
(#11726) - Fix unnecessary trimming of line resulting in incorrect index with
ConciseView
(#11670)
Code Cleanup
- Change name of
ClrVersion
parameter back to revert change in capitalization (#11623)
Tools
Tests
- Make sure to test whether we skip a test using consistent logic (#11892)
- Skip directory creation at root test on macOS (#11878)
- Update
Get-PlatformInfo
helper and tests for Debian 10, 11 and CentOS 8 (#11842) - Ensure correct
pwsh
is used for test runs (#11486) (Thanks @iSazonov!)
Build and Packaging Improvements
- Add
LTSRelease
value frommetadata.json
torelease.json
(#11897) - Bump
Microsoft.ApplicationInsights
from2.12.1
to2.13.0
(#11894) - Make LTS package always not a preview (#11895)
- Bump
System.Data.SqlClient
from4.8.0
to4.8.1
(#11879) - Change
LTSRelease
value inmetadata.json
to true forRC.3
release (Internal 10960) - Update
LTS
logic to depend onmetadata.json
(#11877) - Set default value of
LTSRelease
to false (#11874) - Refactor packaging pipeline (#11852)
- Make sure
LTS
packages have symbolic links forpwsh
andpwsh-lts
(#11843) - Bump
Microsoft.PowerShell.Native
from7.0.0-rc.2
to7.0.0
(#11839) - Update the NuGet package generation to include
cimcmdlet.dll
and most of the built-in modules (#11832) - Bump
Microsoft.PowerShell.Archive
from1.2.4.0
to1.2.5
(#11833) - Bump
PSReadLine
from2.0.0-rc2
to2.0.0
(#11831) - Add trace source and serialization primitives to the allowed assembly list (Internal 10911)
- Update the
NextReleaseTag
to be v7.0.0-preview.7 (#11372) - Change packaging to produce
LTS
packages (#11772) - Build tar packages only when building on Ubuntu (#11766)
- Bump
NJsonSchema
from10.1.4
to10.1.5
(#11730) - Fix symbolic link creation in
packaging.psm1
(#11723) - Bump
Microsoft.ApplicationInsights
from2.12.0
to2.12.1
(#11708) - Bump
NJsonSchema
from10.1.3
to10.1.4
(#11620) - Move to latest Azure DevOps agent images (#11704)
- Bump
Markdig.Signed
from0.18.0
to0.18.1
(#11641)
Documentation and Help Content
- Add links to diffs on Github in changelog (#11652) (Thanks @xtqqczze!)
- Fix markdown-link test failure (#11653) (Thanks @xtqqczze!)
PowerShell 7 is a “go live” release, which means that it is officially supported in production until the release of PowerShell 7 General Availability (GA) next month.
Source: Microsoft
Support us
Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options: