What Happened in PowerShell This Summer

Third roundup of the year, covering August and September, plus what October brought so far: three patch waves and the first 7.7 release candidate. The previous one ran up to the end of July. Pester had a busy summer too, with two feature releases in five weeks — more on that below.
First: 7.4 and 7.5 retire on November 10
If you only read one section, make it this one. PowerShell 7.4 LTS and 7.5 both reach end of support on November 10, 2026, together with .NET 8 and .NET 9. I wrote a separate short post on what that means and where 7.4 tends to hide (Azure Functions, Automation runbooks, build agents). Short version: get onto 7.6 LTS.
7.7 previews 4 and 5, and the first release candidate
Two more previews of 7.7, which is built on .NET 11 and will be a non-LTS release — and this week, the first release candidate.
7.7.0-preview.4 (September 1):
- A new
New-TemporaryDirectorycmdlet, the folder counterpart toNew-TemporaryFile. A community contribution, and one of those “how was this not there already” additions Invoke-WebRequestgot better output file path detection and changed how theAuthorizationheader is handled on redirects — worth testing if you call APIs that redirect- Security hardening in remoting: tighter argument validation and validation of PSRP (PowerShell Remoting Protocol) message fragments
- Ubuntu 26.04 packages
7.7.0-preview.5 (September 23) moved to .NET 11 RC1 and has two changes I’d call out.
Compact output, aimed at AI agents. A new opt-in setting makes the implicit table and wide views autosize their columns:
$PSStyle.AutoSizeDefaultFormatting = $trueThe motivation in the pull request is explicit: “This allows PowerShell to generate less verbose output when used by an agent.” When an AI coding assistant runs Get-Process for you, every padded space in that table costs tokens and context. It also helps in a narrow terminal. List views and complex objects still stream as before. It was backported to 7.6.7, so you can try it on the LTS today.
Get-Process -Name pwsh | Out-Host
$PSStyle.AutoSizeDefaultFormatting = $true
Get-Process -Name pwsh | Out-Host NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
60 39,96 97,50 1,03 8384 1 pwsh
105 53,55 188,41 9,34 16852 1 pwsh
153 98,34 286,98 100,36 21868 1 pwsh
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
60 39,59 98,19 1,08 8384 1 pwsh
105 53,55 188,41 9,34 16852 1 pwsh
153 98,34 286,98 100,36 21868 1 pwshSame processes, same data, but every column is only as wide as it needs to be. The | Out-Host matters in this demo: without it, both commands write into one and the same table, which keeps the first command’s layout, so you’d see no difference at all.
A broken user config file no longer stops PowerShell from starting. If your per-user powershell.config.json can’t be read — bad JSON, wrong permissions, or OneDrive’s file provider not running yet when you open a terminal — PowerShell now falls back to the defaults and writes a warning, instead of failing. The system-wide config still fails hard, which makes sense: it’s admin-owned, and on Linux and macOS it’s where some security policies live. Also backported to 7.6.7.
Preview 5 bundles PSResourceGet 1.3.0-preview2 and PSReadLine 2.4.5.
7.7.0-rc.1 (October 29) is mostly hardening and fixes, which is what you’d expect from a release candidate:
- The update notification is gone. PowerShell no longer tells you at startup that a new version is available. The same change shipped in 7.6.8 (see the servicing waves below), so update your machines through your package manager or whatever you deploy with
- Several Constrained Language Mode protections around property assignment, and implicit-remoting protections that now also apply to aliases
Test-Jsonno longer follows external schema references by default — you now need-FetchExternalReferencefor that. Worth testing if your schemas$refother files or URLs- Fixes for
Get-ChildItem -Recurse -Name,Resolve-Path -Relativewith dot-prefixed names, and duplicate results fromGet-Command’s fuzzy matching - It bundles PSResourceGet 1.3.0-rc1
DSC v3.3 is GA
DSC v3.3.0 was released on September 17 — the only post on the PowerShell team blog in this window. If you followed my DSC v3 primer and the v3.2 post, the highlights:
- New Windows resources:
Microsoft.Windows/RegistryList,WindowsFeatureListandPersonalization, plus a registry adapter --what-ifnow works for services, firewall rules and the SSH server config resources- New
stateChanged()andrestartRequired()expression functions, andformat()is now stable - DSC is now published as RPM and DEB packages on packages.microsoft.com
Two renames, both keeping the old name as a backward-compatible alias:
dsc mcpis nowdsc server- On
dsc resourcecommands,--versionis now--required-version
v3.4.0-preview.1 was published on September 10, a week before 3.3 GA, with JSON schema caching, a Group Policy template adapter, and resources for Windows environment variables and file content. v3.4.0-preview.2 followed on October 28 with ACL support: a new Microsoft.Filesystem/ACL resource and ACLs on the registry resources, plus an environment path variable resource and a Windows Configuration Service Provider (CSP) adapter.
Pester 6.1 and 6.2
Two feature releases followed Pester 6.0 from July, each with its own post:
- Pester 6.1 (August 11) —
New-ShouldAssertionfor writing your ownShould-*assertions,-NormalizeLineEndingand-IgnoreOrderoptions, and experimental global mocks (Mock.Global, which the maintainers want as the default in Pester 7) and shuffled test order. TheRun.BeforeContaineroption was quietly removed - Pester 6.2 (September 9) —
Pester.BeforeContainer.ps1setup files now cascade down your test folders, multipleBeforeAllblocks are allowed again (reversing a 6.0 breaking change), configuration typos and wrong types are caught, and parallel runs work on Windows PowerShell 5.1
6.2 is the one I’d single out. The setup-file cascade removes a lot of copy-pasted BeforeAll boilerplate from bigger test suites, and the configuration validation finally tells you when a typo like Run.Paralel means an option silently does nothing.
If you’re moving from v5 now, start with 6.2 — going for the latest is the right call unless it’s broken. The move from 4.x to 5.x was the big syntax change; from 5.x to 6.x is a lot easier.
A few issues were reported after 6.2 that are worth knowing about, mostly if you use the still-experimental parallel runs:
- #3047 — parallel runs can fail with “Collection was modified” while importing modules
- #3044 — warning output now shows up in parallel runs
- #3059 —
Should-BeCollectiondoesn’t check item order, while v5’sShould -Be @(1, 2, 3)did. Worth knowing when you convert assertions
PSResourceGet 1.3 previews and release candidates
PSResourceGet 1.3.0-preview2 (September 18) continues the roadmap from May:
- Platform-aware installs — packages with native components can be filtered by
-RuntimeIdentifierand-TargetFramework, so you don’t download every platform’s binaries PSContentPath— standard platform paths for where modules and scripts are installed- More parallelism during installs
-WhatIfsupport for the DSC resource’s list operations — one of several DSC resource contributions by Gijs Reijn (@Gijsreyn)
In October it moved to release candidates: 1.3.0-rc1 (October 20) adds custom error messages for the PowerShell Gallery and more install concurrency, and rc2 (October 29) only updates dependencies — so GA looks close. Stable is still 1.2.0, and remember that 1.3 drops Windows PowerShell 5.1 support.
The servicing waves
Five rounds in this window, most of them covering 7.6, 7.5 and 7.4:
| Date | 7.6 (LTS) | 7.5 | 7.4 (LTS) | Notable |
|---|---|---|---|---|
| August 14 | 7.6.5 | 7.5.10 | 7.4.19 | Fixes dot-sourcing of advanced-function scripts run with pwsh -File |
| September 8 | 7.6.6 | 7.5.11 | 7.4.20 | Fixes a crash on older Windows versions related to WLDP (Windows Lockdown Policy) |
| October 13 | 7.6.7 | 7.5.12 | 7.4.21 | Tolerant user config, AutoSizeDefaultFormatting backport; same day as the October .NET security updates |
| October 22 | 7.6.8 | — | — | Removes the update notification at startup |
| October 25 | 7.6.9 | 7.5.13 | 7.4.22 | .NET SDK update only |
7.4.22 and 7.5.13 are likely the last or second-to-last patches those lines will get: end of support, November 10, is also November’s Patch Tuesday.
Az and Microsoft Graph
- Az 16.2.0 (August 4) — Az.Storage 9.7.2 fixes a path traversal issue in
Get-AzStorageBlobContentandGet-AzDataLakeGen2ItemContent. If you download blobs with names you don’t control, update - Az 16.3.0 (August 31) — Az.KeyVault moves to a newer API version; older Key Vault API versions retire on February 27, 2027
- Az 16.4.0 (October 6) — two new GA modules (Az.Discovery and Az.Mission) and
SpotPluspriority forNew-AzVM - Microsoft Graph PowerShell SDK — 2.39 added
-LoginHinttoConnect-MgGraph, and 2.41.x isolates the authentication module’s dependencies to fix assembly conflicts. 2.41.2 is current
Community
- PSConfEU 2026 recordings — the sessions from June are on YouTube, including my Pester workshop with Jakub Jareš and a Spec Kit session
- PSConfEU MiniCon 2026 took place online on October 13 — free, in Gather Town, with sessions spread over the day for every time zone
- PSConfEU 2027 goes to Kraków, Poland: June 21–24, 2027. The call for speakers opened on October 13 and runs until December 13. Earlier, on September 1, the organizers published a candid post on pricing PSConfEU for a sustainable future: the base ticket stayed at €1,499 from 2016 to 2023 and has been around €1,750 since 2024, while venue, audiovisual and staffing costs rose faster than inflation
- PowerShell + DevOps Global Summit 2027 moves to Orlando: April 5–8, 2027. The call for speakers has closed, and the schedule is expected on November 1
A quiet editor season
No new releases of PSScriptAnalyzer, PSReadLine, or the VS Code extension in this window. The extension’s newest build is still the 2026.1.2-preview from June, and the latest stable is from October 2025 — a long gap for the extension most of us write PowerShell in.
Wrap
For Pester, this was the stretch where version 6 settled in: 6.1 made the new assertions extensible, and 6.2 took away a lot of setup boilerplate and one of the more annoying 6.0 breaking changes. If you’ve been waiting to move from v5, 6.2 is a good moment.
For PowerShell itself, the theme, if there is one: adjusting to being driven by AI agents as much as by people — compact output for agents in 7.7, and DSC’s MCP mode now being a general server mode. And underneath it, the usual servicing work. Most important action item: November 10.
Happy scripting 😊