PowerShell 7.7 New Features Explained: UUID v7, .NET 11 and the End of the MSI Installer

PowerShell 7.7 new features explained — PowerShell running in Windows Terminal

PowerShell running in Windows Terminal. Image: Wikimedia Commons / Refresh100, MIT licence. The screenshot shows version 7.5.0 — the 7.7 shell looks the same; this is the actual product interface, not a stock photo.

TL;DR: PowerShell 7.7 new features explained in one line: Microsoft's shell is now generally available on .NET 11, with time-sortable UUID v7 IDs by default, a new temporary-directory cmdlet, tighter security hardening — and no MSI installer any more, so Windows users now install it through winget or the MSIX bundle.

Key Highlights

  • Generally available now: Microsoft announced PowerShell 7.7 GA on 10 November 2026, and the v7.7.0 release went live on GitHub the same day.
  • Built on .NET 11: 7.7 is a Standard Term Support (STS) release on .NET 11; PowerShell 7.6 remains the LTS option, supported until 14 November 2028.
  • UUID v7 by default: New-Guid now generates time-sortable version 7 IDs instead of random version 4 ones.
  • New cmdlet: New-TemporaryDirectory creates a uniquely named temp folder — and it works in Constrained Language Mode, where direct .NET calls are blocked.
  • No more MSI: from 7.7.0 there is no MSI package at all. Winget installs the MSIX package, which cannot do remoting — check before you upgrade.
  • Deadline pressure: PowerShell 7.5 and 7.4 both reached end of support on 10 November 2026, the same week 7.7 shipped.

PowerShell 7.7 is now generally available

Microsoft announced the general availability of PowerShell 7.7 on 10 November 2026, in a post by senior product manager Jason Helmick on the PowerShell Team blog, and the v7.7.0 release was published on GitHub the same day. It is the next Standard Term Support (STS) release of the shell, built on .NET 11 — continuing the alignment between PowerShell and .NET releases that saw PowerShell 7.6 ship on .NET 10 earlier in 2026. If you want the newest features, 7.7 is the release to install; if you want the longest support window, 7.6 LTS is still the safer pick, with support running until 14 November 2028.

The timing matters for a second reason. PowerShell 7.5 and the 7.4 LTS line both reached end of support on 10 November 2026, according to Microsoft's support lifecycle page. Anyone still running 7.4 or 7.5 is now on an unsupported shell, with no further updates — not even security fixes. The 7.7 release lands in the same week, which is not a coincidence: Microsoft's message is that it is upgrade season. The lifecycle table had not yet been updated with 7.7's own end-of-support date at the time of writing; as an STS release, its support follows the .NET 11 lifecycle under Microsoft's Modern Lifecycle Policy.

PowerShell 7.7 is free and open source under the MIT licence, and it installs side by side with Windows PowerShell 5.1 — it does not replace it. You start it with the pwsh command, while the older shell stays available as powershell.exe. That side-by-side design is what makes an upgrade low-risk: your existing 5.1 scripts keep running exactly where they were.

PowerShell 7.7 new features explained

The headline change is the one most scripts will notice first. New-Guid now generates version 7 UUIDs by default instead of version 4. Version 7 IDs are time-sortable: the first part of the ID encodes a timestamp, so IDs created later sort after IDs created earlier. That makes them far friendlier for database keys, log correlation and distributed systems, where random v4 IDs scatter across indexes. The output format is unchanged, so existing parsing code keeps working — but if a script depends on IDs being fully random, switch it to [guid]::NewGuid(), which still produces a v4 GUID.

The second genuinely new thing is New-TemporaryDirectory. It creates a uniquely named directory in the system temp folder and returns a DirectoryInfo object, with a -Prefix parameter so scratch folders are easy to recognise. It mirrors the long-standing New-TemporaryFile, and its real value shows up in locked-down environments: in Constrained Language Mode, where direct .NET calls are blocked, this cmdlet still works, so build and deployment scripts no longer need a workaround to create a temp folder. Microsoft's own example is short enough to memorise:

$workDir = New-TemporaryDirectory -Prefix build
$workDir.FullName
Remove-Item -LiteralPath $workDir.FullName -Recurse

Around those two, 7.7 adds a set of smaller quality-of-life improvements:

ChangeWhat it does
Join-Path -ExtensionAdds an extension to a path without string concatenation
Format-* -ExcludePropertyFormat-Table, Format-List and Format-Custom can now hide named properties
Get-AuthenticodeSignatureSignature object now carries a SubjectAlternativeName property
WildcardPattern.ToRegex()Turns a wildcard pattern into a regular expression
$PSStyle.AutoSizeDefaultFormattingOptional switch that forces compact, auto-sized table output — useful when the shell is driven by AI agents or run in narrow terminals
Switch parametersExplicit -Switch:$false values are now respected by Split-Path, New-PSSession, Test-Connection, Get-TimeZone, Get-Random, Get-SecureRandom, Get-Uptime, New-Guid and Where-Object operators
ModulesPSResourceGet updated to the 1.3.0 line; PSReadLine updated to 2.4.5

Under the hood, the release is mostly hardening and reliability work. Constrained Language Mode gets additional protections, including restrictions on property assignment on non-core objects. PowerShell remoting gets stronger argument and frame validation, the CIM cmdlets get their schema validation restored, and implicit-remoting protections now apply to resolved aliases. Test-Json no longer resolves external schema references unless you pass -FetchExternalReference, which stops a validation step from silently fetching files or URLs. On the reliability side, a damaged or unreadable per-user powershell.config.json no longer stops PowerShell from starting — it falls back to built-in defaults with a warning — and tab completion, progress-bar rendering for double-width Unicode characters and Clear-Host in remote sessions all get fixes. Telemetry now respects the Windows diagnostics and feedback setting. Three experimental features ship behind flags: loading assemblies from native code, serialising large enums as numbers in JSON, and a DSC v3 resource for PowerShell profiles.

PowerShell 7.7 new features explained — PowerShell Core running in Windows Terminal on Windows 11

PowerShell Core running in Windows Terminal on Windows 11. Image: Wikimedia Commons, MIT licence. The screenshot shows version 7.4.0 — the 7.7 interface is the same shell; this is the actual product interface, not a stock photo.

Breaking changes to check before you upgrade

Microsoft describes 7.7's breaking changes as a small number, but two of them can bite real scripts, and one packaging change can break deployments outright:

ChangeWhat to do
New-Guid returns UUID v7, not v4Use [guid]::NewGuid() where fully random IDs are required
Format-* validates -PropertyNull or empty -Property values now throw instead of being ignored
Null-or-empty argument validationThrows System.ArgumentException instead of PSArgumentNullException — update any catch blocks that match the old type
Update notification removedPowerShell no longer prints "a new release is available" — rely on your package manager or Microsoft Update instead
Export-Csv -Append + -NoHeaderThe two switches are now mutually exclusive; -NoTypeInformation is a deprecated no-op that only writes a warning
No MSI package from 7.7.0Deployment scripts that download the MSI will fail — switch to winget or the MSIX bundle (see below)

The MSI removal deserves a paragraph of its own, because it changes how PowerShell is deployed. Microsoft announced the deprecation in September 2026: from 7.7, the MSIX package is the primary install method on Windows, and there is no MSI at all. Winget now installs the MSIX package by default. That is fine for a single workstation, but MSIX installs are per-user and run in an application sandbox, so they do not support PowerShell remoting, cannot create or modify all-users profile scripts, and cannot run commands such as Register-PSSessionConfiguration or Set-ExecutionPolicy -Scope LocalMachine. If you manage servers or shared machines, use the ZIP package instead — it installs anywhere, side by side with other versions — and check Microsoft's install documentation before you roll 7.7 out.

How to install PowerShell 7.7 on Windows

On Windows, Microsoft recommends winget, which is included in Windows 11 and Windows Server 2025 as part of App Installer. From any command shell, run:

winget install --id Microsoft.PowerShell --source winget

From 7.7.0, winget installs the MSIX package only. To check what you got afterwards, run $PSVersionTable in the new shell and look for PSVersion 7.7.0. If you need the ZIP package — for servers, for side-by-side installs, or for Arm machines — download PowerShell-7.7.0-win-x64.zip (or the Arm64 build) from the v7.7.0 release page on GitHub, unzip it to a folder of your choice and run pwsh.exe from there. On macOS, use the .pkg installer from the same release page; on Linux, use the .deb or .rpm packages, or the Microsoft package repository. PowerShell 7 also supports updates through Microsoft Update, so once installed it can stay current through the normal Windows update flow. If you are upgrading from 7.6, use the same install method you used the first time — newer versions replace the previous version of the same line, while preview builds install side by side.

Should you upgrade to PowerShell 7.7?

✅ Verdict — upgrade, but read the packaging note first. For most developers and admins, 7.7 is a straightforward upgrade: the new features are useful, the breaking changes are small and clearly documented, and 7.4/7.5 are now unsupported, so staying put is the riskier option. But if you deploy PowerShell with scripts that fetch the MSI, or you rely on remoting from a Store/MSIX install, fix that first — the MSI is gone, and an MSIX install cannot do remoting. If you need the longest support runway rather than the newest features, install 7.6 LTS instead; it is supported until 14 November 2028.

For Indian readers, the practical angle is deployment. PowerShell is the everyday automation shell across Indian IT services firms, enterprise Windows estates and Azure shops, and the two changes that matter most here are the ones that break existing automation: the MSI disappearing and New-Guid changing its output. Both are easy to handle — switch install scripts to winget or the MSIX bundle, and grep scripts for New-Guid where randomness matters — but both need to be handled before a fleet-wide rollout, not discovered during one. The UUID v7 change is the nicer half of the story for teams that generate IDs in scripts: time-sortable IDs make logs and database keys noticeably easier to work with, and it costs nothing to adopt. And because 7.7 arrives in the same week as .NET 11, which it is built on, the two upgrades pair naturally — check our .NET 11 new features explainer if you are planning both. Developers who live in an editor will also want our Visual Studio Code 1.146 new features explainer, and anyone patching this week should read our Node.js November 11 security release explainer.

FAQs

How do I install PowerShell 7.7 on Windows?
The recommended way is winget: run winget install --id Microsoft.PowerShell --source winget from any command shell. From 7.7.0, winget installs the MSIX package, because there is no MSI any more. You can also download the MSIX bundle or the ZIP package from the v7.7.0 release page on GitHub.

Is PowerShell 7.7 free?
Yes. PowerShell is free and open source, released under the MIT licence. You can download, use and modify it without paying; Microsoft's paid support channels exist, but community support through Discord, Slack and GitHub is free.

What is the difference between PowerShell 7.7 and Windows PowerShell 5.1?
Windows PowerShell 5.1 is the older shell built into Windows and tied to the Windows support lifecycle. PowerShell 7.7 is the modern, cross-platform shell built on .NET 11, available on Windows, macOS and Linux. It installs side by side with 5.1 — installing 7.7 does not remove or replace 5.1, and some older Windows-only modules still need 5.1.

Should I upgrade to PowerShell 7.7 from 7.6?
If you want the newest features — UUID v7, New-TemporaryDirectory, the security hardening — yes. If you want the longest support window, stay on 7.6 LTS, which is supported until 14 November 2028. But do not stay on 7.4 or 7.5: both reached end of support on 10 November 2026, so they no longer receive security updates.

Takeaway

PowerShell 7.7 is a solid, unspectacular release in the best sense: useful new commands, meaningful security hardening, and one packaging change that demands attention before you deploy it widely. The upgrade itself takes a minute — run the winget command above, then check $PSVersionTable shows 7.7.0.

Sources

Comments