Microsoft releases PowerShell 7.7.0-rc.1, dropping the built-in update nag
Microsoft has published PowerShell 7.7.0-rc.1, the first release candidate on the road to 7.7.0. It went live to GitHub on October 29 and was tagged by maintainer Jiajie Shao. In practical terms, that means 7.7.0 has entered its final stabilization phase.
Seven commits have already landed on master since RC1 shipped. So the eventual GA build won't be identical to this candidate, and a few more changes are still incoming. The headline change is the removal of the long-debated update notification. But the RC also quietly moves PowerShell to .NET 11 and loads up on security hardening.
The update notification is gone
PowerShell has been printing "A new PowerShell release is available" in one form or another since the 7.x line launched. Microsoft pulled the feature entirely in 7.7, through PR #28242. The reasoning tracks. Distribution has gotten more varied and more corporate at the same time. People install via winget, apt, brew, yum, or enterprise tooling, and those systems already own update detection.
"Over time, the ecosystem around PowerShell distribution has evolved," the team wrote. "Many users now install and maintain PowerShell through channels such as package managers, operating system updates, or enterprise management tooling."
The upshot: PowerShell should just be the version it is and get on with it.
The community, though, was genuinely split on this one. The removal followed Discussion #27060, opened March 18, 2026 by collaborator Jason Helmick. It drew 12 comments and 14 replies, and the room didn't agree. Some folks said they never used the notification. Others called it amateur, pointing out that PowerShell can't actually tell how it was installed. If you're on Windows Server 2016, winget simply doesn't exist, leaving a real gap.
Thomas Lee (@doctordns), author of several PowerShell books, argued the opposite. The nag is genuinely useful for Windows Server admins running VM farms, he said, letting them re-run a quick install script in seconds.
macOS users had their own worry. Those leaning on the Homebrew cask or .pkg installer feared losing their only update awareness.
If you still want the message gone, $env:POWERSHELL_UPDATECHECK = "Off" still works. Keep in mind that older builds like 7.5.4 contain the check, so only newer versions are actually affected by the removal. It's arguably the most "cultural shift" change in the entire 7.7 cycle, even if most won't notice it.
Hardening, new features, and a .NET jump
RC1 isn't all about taking things away. A disproportionate share of the changes are lockdown, and they cluster around Constrained Language Mode. There are fixes for property assignment on non-core objects, protections for the ForEach() construct, and implicit-remoting protections now extended to resolved aliases.
Test-Json now requires -FetchExternalReference to resolve external schema references. That stops it from doing unexpected network or file access while validating against a schema.
Other hardening touches: the fallback temporary home directory on Unix gets file-mode checks, the deprecated X509Certificate2 constructor is replaced with a safer load API, and Hyper-V socket server V2 binds to the selected partition VM ID. Across the series, AMSI content logging is disabled in release builds and support was added for a new WLDP setting.
Two features will actually show up in daily scripting. First is New-TemporaryDirectory, a brand-new cmdlet that creates and returns a temp directory. It fills a gap that's existed long enough to be a mild annoyance.
Second, New-Guid now generates UUID v7 by default. That's the time-ordered version, which plays nicer for distributed systems and database keys than the old UUID v4. You can still opt into the legacy behavior with -Empty:$false.
Beyond those, the series carries a grab-bag of usability tweaks. There's -ExcludeProperty on the Format-* cmdlets, an -Extension parameter on Join-Path, and a ToRegex() method that turns wildcard patterns into regular expressions.
On the runtime front, RC1 is compiled against .NET SDK 11.0.100-rc.3 and will run on the .NET 11 runtime. That's the big jump from 7.6 LTS, which sits on .NET 10. The PSResourceGet module also moved to 1.3.0-rc1, the code behind the newer Install-PackageResource family.
Head here to the GitHub release page.
It's an RC, which means this is for testers and enthusiasts, not production. The seven post-RC commits on master show there's still polishing happening, and several "new" features were actually added in earlier previews and just carried forward.
