This week, PowerShell v7.7 was released, based on .NET 11, and is the first GA version without an MSI installer. In this short blog post, I will highlight the changes, improvements, and the impact of the MSI decision.
GA release?
GA stands for General Availability, and it includes Standard Term Support, aligning with .NET releases. (The LTS releases have longer support. )
Improvements
The main focus of v7.7 is security hardening, new and improved commands, reliability, remoting, and the interactive shell experience.
Notable areas of improvement include:
- Security hardening across Constrained Language Mode, remoting, and help
- New commands and parameters
- More predictable handling of switch parameters
- Startup, tab completion, and file system fixes
- Module updates
For support dates, see the PowerShell support lifecycle article.
Highlights
These are mentioned on the https://devblogs.microsoft.com/powershell/announcing-powershell-7-7/ site, too, but the list is:
- PowerShell 7.7 is built on .NET 11
- PowerShell 7.7 includes updates to the following modules:
- Microsoft.PowerShell.PSResourceGet
- Microsoft.PowerShell.Archive
- New and improved commands
- Added the
New-TemporaryDirectorycmdlet - Added the
-Extensionparameter toJoin-Path - Added the
-ExcludePropertyparameter toFormat-Table,Format-List, andFormat-Custom Get-AuthenticodeSignaturenow returns aSubjectAlternativeNameproperty- Added a
ToRegex()method toWildcardPattern New-Guidnow generates version 7 (time-sortable) UUIDs by default
- Added the
- Security hardening
- Additional protections for Constrained Language Mode, including property assignment on non-core objects
- Stronger argument and frame validation in PowerShell remoting, and restored schema validation in the CIM cmdlets
- Implicit remoting protections now apply to resolved aliases
- Stricter validation when extracting updatable help
- Tighter file permissions for the fallback temporary home directory on Unix platforms
Test-Jsonno longer resolves external schema references unless you ask it to
- More predictable switch parameters
- Explicit
-Switch:$falsevalues are now respected bySplit-Path,New-PSSession,Test-Connection,Get-TimeZone,Get-Random,Get-SecureRandom,Get-Uptime, andNew-Guid, and by the operator parameters ofWhere-Object
- Explicit
- Reliability and quality improvements
- A damaged or unreadable per-user
powershell.config.jsonno longer stops PowerShell from starting - Fixed
Resolve-Path -Relativefor names that begin with a dot - Fixed duplicate results from
Get-Commandfuzzy matching - Fixed
Clear-Hostfor remote Windows sessions from non-Windows platforms - Fixed tab completion of positional parameters and completion for
$PSBoundParameters.Keys - Improved handling of custom argument completers that return empty or null results
- Fixed
pwsh -filedot-sourcing of advanced-function scripts - Fixed progress bar rendering for double-width Unicode characters
- A damaged or unreadable per-user
- Telemetry now respects the Windows diagnostics and feedback setting
Breaking and behavior changes
PowerShell 7.7 includes a small number of breaking changes. Review them before you upgrade production scripts.
New-Guidgenerates version 7 (time-sortable) UUIDs by default instead of version 4. Use[guid]::NewGuid()when you need a fully random GUID.Format-Table,Format-List, andFormat-Customnow validate that-Propertyis not null or empty.- Null-or-empty argument validation now throws
System.ArgumentException. - Explicit false values for
Where-Objectoperator switches, such as-EQ:$false, are now handled correctly.
These changes might also affect existing scripts:
- The update notification feature was removed from PowerShell.
Test-Jsonrequires-FetchExternalReferenceto resolve external schema references.Export-Csvno longer accepts-Appendtogether with-NoHeader. Using-NoTypeInformationon the CSV cmdlets now writes a deprecation warning and has no effect.Get-ChildItem -Namewith-Recursenow returns matching files in subdirectories when the path contains a wildcard or names a file.- Constrained Language Mode restricts property assignment on non-core objects, including through
ForEach().
Community contributions
PowerShell is built by a global community of users and contributors; Microsoft wants to thank them, and I’m happy to see familiar names 🙂
- Top pull request commenters: @iSazonov, @muffy86, and @KirtiRamchandani
- Top issue commenters: @mklement0, @237dmitry, and @rhubarb-geek-nz
The following individuals contributed code to the PowerShell 7.7 release:
- @adamdriscoll, @amritanand-py, @behradbhrmi, @cuiweixie, @jborean93
- @jorgeasaurus, @kasperk81, @KirtiRamchandani, @logiclrd, @MartinGC94
- @MathiasMagnus, @mikkas456, @powercode, @reabr, @rwp0
- @scuzqy, @SufficientDaikon, @ThioJoe, @trackd, @xtqqczze
- @yotsuda, @yuunnn
Installation
Mac
You can install it on your Mac using:
brew install --cask powershell
After installation, you can use pwsh to start:

WinGet
You can install the new version using the WinGet command line by running:
winget install --id Microsoft.PowerShell --source winget
This will install the Windows Store version (MSIX) and not the normal MSI version on your system:

PEGI 3 rating and a screenshot v7.6.7 😉
The installation folder is also different now because of that:

That’s the new installation method; it works, but it affects everything you want to run as a SYSTEM or from a Scheduled Task. (It’s installed for you, but not for the whole system.) This may not be a problem for you, but it is for admins who need it. (PowerShell remoting is also impacted.) For more information, read my previous blog post here: https://powershellisfun.com/2026/04/10/powershell-msi-package-deprecation-starting-with-the-new-preview-updates-v7-7-preview-1/
Installers
You can download the installer from the Assets list here: You can download the installer from the Assets list here: https://github.com/PowerShell/PowerShell/releases/tag/v7.7.0-rc.1#:~:text=2%20other%20contributors-,Assets,-26. There are installers for Linux (ARM32/ARM64/x64), OSX, Windows ARM64, Windows X64/x86 in rpm, deb, msix, pkg, tar.gz formats. There are installers for Linux (ARM32/ARM64/x64), OSX, Windows ARM64, and Windows X64/x86 in rpm, deb, msix, pkg, and tar.gz formats.
Wrapping up
And that’s everything about the new GA version of PowerShell v7.7. Have a lovely weekend!
Hope the devs revert this new directory structure back, doesn’t make sense…
A lot of people are complaining about this already on GH
https://github.com/PowerShell/PowerShell/issues/28393
Regards
If it stays MSIX, than that’s the folder because of that… And yes, in my group chats with other PowerShell peeps, too 😅