PowerShell v7.7 GA release and the end of the MSI installer?

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-TemporaryDirectory cmdlet
    • Added the -Extension parameter to Join-Path
    • Added the -ExcludeProperty parameter to Format-Table, Format-List, and Format-Custom
    • Get-AuthenticodeSignature now returns a SubjectAlternativeName property
    • Added a ToRegex() method to WildcardPattern
    • New-Guid now generates version 7 (time-sortable) UUIDs by default
  • 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-Json no longer resolves external schema references unless you ask it to
  • More predictable switch parameters
    • Explicit -Switch:$false values are now respected by Split-Path, New-PSSession, Test-Connection, Get-TimeZone, Get-Random, Get-SecureRandom, Get-Uptime, and New-Guid, and by the operator parameters of Where-Object
  • Reliability and quality improvements
    • A damaged or unreadable per-user powershell.config.json no longer stops PowerShell from starting
    • Fixed Resolve-Path -Relative for names that begin with a dot
    • Fixed duplicate results from Get-Command fuzzy matching
    • Fixed Clear-Host for 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 -file dot-sourcing of advanced-function scripts
    • Fixed progress bar rendering for double-width Unicode characters
  • 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-Guid generates 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, and Format-Custom now validate that -Property is not null or empty.
  • Null-or-empty argument validation now throws System.ArgumentException.
  • Explicit false values for Where-Object operator 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-Json requires -FetchExternalReference to resolve external schema references.
  • Export-Csv no longer accepts -Append together with -NoHeader. Using -NoTypeInformation on the CSV cmdlets now writes a deprecation warning and has no effect.
  • Get-ChildItem -Name with -Recurse now 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!

2 thoughts on “PowerShell v7.7 GA release and the end of the MSI installer?”

Leave a Reply

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