{"id":21034,"date":"2026-11-10T13:05:06","date_gmt":"2026-11-10T21:05:06","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/powershell\/?p=21034"},"modified":"2026-11-10T13:05:06","modified_gmt":"2026-11-10T21:05:06","slug":"announcing-powershell-7-7","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/announcing-powershell-7-7\/","title":{"rendered":"Announcing PowerShell 7.7 GA Release"},"content":{"rendered":"<p><!-- markdownlint-disable MD041 --><\/p>\n<p>We&#8217;re excited to announce the General Availability of PowerShell 7.7, the next Standard Term Support\n(STS) release of PowerShell. PowerShell 7.7 is built on .NET 11, continuing the alignment between\nPowerShell and the modern .NET platform.<\/p>\n<p>PowerShell 7.7 focuses on security hardening, new and improved commands, and reliability across the\nengine, remoting, and interactive shell experience.<\/p>\n<p>Notable areas of improvement include:<\/p>\n<ul>\n<li>Security hardening across Constrained Language Mode, remoting, and help<\/li>\n<li>New commands and parameters<\/li>\n<li>More predictable handling of switch parameters<\/li>\n<li>Startup, tab completion, and file system fixes<\/li>\n<li>Module updates<\/li>\n<\/ul>\n<p>For support dates, see the <a href=\"https:\/\/learn.microsoft.com\/powershell\/scripting\/install\/powershell-support-lifecycle\">PowerShell support lifecycle<\/a> article.<\/p>\n<h2>Highlights<\/h2>\n<ul>\n<li>PowerShell 7.7 is built on .NET 11<\/li>\n<li>PowerShell 7.7 includes updates to the following modules:\n<ul>\n<li>Microsoft.PowerShell.PSResourceGet<\/li>\n<li>Microsoft.PowerShell.Archive<\/li>\n<\/ul>\n<\/li>\n<li>New and improved commands\n<ul>\n<li>Added the <code>New-TemporaryDirectory<\/code> cmdlet<\/li>\n<li>Added the <code>-Extension<\/code> parameter to <code>Join-Path<\/code><\/li>\n<li>Added the <code>-ExcludeProperty<\/code> parameter to <code>Format-Table<\/code>, <code>Format-List<\/code>, and <code>Format-Custom<\/code><\/li>\n<li><code>Get-AuthenticodeSignature<\/code> now returns a <code>SubjectAlternativeName<\/code> property<\/li>\n<li>Added a <code>ToRegex()<\/code> method to <code>WildcardPattern<\/code><\/li>\n<li><code>New-Guid<\/code> now generates version 7 (time-sortable) UUIDs by default<\/li>\n<\/ul>\n<\/li>\n<li>Security hardening\n<ul>\n<li>Additional protections for Constrained Language Mode, including property assignment on\nnon-core objects<\/li>\n<li>Stronger argument and frame validation in PowerShell remoting, and restored schema validation\nin the CIM cmdlets<\/li>\n<li>Implicit remoting protections now apply to resolved aliases<\/li>\n<li>Stricter validation when extracting updatable help<\/li>\n<li>Tighter file permissions for the fallback temporary home directory on Unix platforms<\/li>\n<li><code>Test-Json<\/code> no longer resolves external schema references unless you ask it to<\/li>\n<\/ul>\n<\/li>\n<li>More predictable switch parameters\n<ul>\n<li>Explicit <code>-Switch:$false<\/code> values are now respected by <code>Split-Path<\/code>, <code>New-PSSession<\/code>,\n<code>Test-Connection<\/code>, <code>Get-TimeZone<\/code>, <code>Get-Random<\/code>, <code>Get-SecureRandom<\/code>, <code>Get-Uptime<\/code>, and\n<code>New-Guid<\/code>, and by the operator parameters of <code>Where-Object<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Reliability and quality improvements\n<ul>\n<li>A damaged or unreadable per-user <code>powershell.config.json<\/code> no longer stops PowerShell from\nstarting<\/li>\n<li>Fixed <code>Resolve-Path -Relative<\/code> for names that begin with a dot<\/li>\n<li>Fixed duplicate results from <code>Get-Command<\/code> fuzzy matching<\/li>\n<li>Fixed <code>Clear-Host<\/code> for remote Windows sessions from non-Windows platforms<\/li>\n<li>Fixed tab completion of positional parameters and completion for <code>$PSBoundParameters.Keys<\/code><\/li>\n<li>Improved handling of custom argument completers that return empty or null results<\/li>\n<li>Fixed <code>pwsh -file<\/code> dot-sourcing of advanced-function scripts<\/li>\n<li>Fixed progress bar rendering for double-width Unicode characters<\/li>\n<\/ul>\n<\/li>\n<li>Telemetry now respects the Windows diagnostics and feedback setting<\/li>\n<\/ul>\n<h2>A quick example<\/h2>\n<p><code>New-TemporaryDirectory<\/code> creates a uniquely named directory in the system temp folder and returns a\n<code>DirectoryInfo<\/code> object. Use <code>-Prefix<\/code> to make the directory easier to recognize:<\/p>\n<pre><code class=\"language-powershell\"># Create a uniquely named directory in the system temp folder\r\n$workDir = New-TemporaryDirectory -Prefix build\r\n$workDir.FullName\r\n\r\n# Remove it when you're done\r\nRemove-Item -LiteralPath $workDir.FullName -Recurse<\/code><\/pre>\n<h2>Breaking changes<\/h2>\n<p>PowerShell 7.7 includes a small number of breaking changes. Review them before you upgrade\nproduction scripts.<\/p>\n<ul>\n<li><code>New-Guid<\/code> generates version 7 (time-sortable) UUIDs by default instead of version 4. Use\n<code>[guid]::NewGuid()<\/code> when you need a fully random GUID.<\/li>\n<li><code>Format-Table<\/code>, <code>Format-List<\/code>, and <code>Format-Custom<\/code> now validate that <code>-Property<\/code> is not null or\nempty.<\/li>\n<li>Null-or-empty argument validation now throws <code>System.ArgumentException<\/code>.<\/li>\n<li>Explicit false values for <code>Where-Object<\/code> operator switches, such as <code>-EQ:$false<\/code>, are now handled correctly.<\/li>\n<\/ul>\n<h2>Other behavior changes<\/h2>\n<p>These changes might also affect existing scripts:<\/p>\n<ul>\n<li>The update notification feature was removed from PowerShell.<\/li>\n<li><code>Test-Json<\/code> requires <code>-FetchExternalReference<\/code> to resolve external schema references.<\/li>\n<li><code>Export-Csv<\/code> no longer accepts <code>-Append<\/code> together with <code>-NoHeader<\/code>. Using <code>-NoTypeInformation<\/code>\non the CSV cmdlets now writes a deprecation warning and has no effect.<\/li>\n<li><code>Get-ChildItem -Name<\/code> with <code>-Recurse<\/code> now returns matching files in subdirectories when the path\ncontains a wildcard or names a file.<\/li>\n<li>Constrained Language Mode restricts property assignment on non-core objects, including through\n<code>ForEach()<\/code>.<\/li>\n<\/ul>\n<h2>Community contributions<\/h2>\n<p>PowerShell is built by a global community of users and contributors. Thank you to everyone who\nfiled issues, tested previews, improved docs, and submitted fixes during the PowerShell 7.7\nrelease cycle.<\/p>\n<p>We want to give a special thanks to the community members who spent the most time helping\nothers in the repository this release:<\/p>\n<ul>\n<li><strong>Top pull request commenters:<\/strong> @iSazonov, @muffy86, and @KirtiRamchandani<\/li>\n<li><strong>Top issue commenters:<\/strong> @mklement0, @237dmitry, and @rhubarb-geek-nz<\/li>\n<\/ul>\n<p>The following individuals contributed code to the PowerShell 7.7 release:<\/p>\n<ul>\n<li>@adamdriscoll, @amritanand-py, @behradbhrmi, @cuiweixie, @jborean93<\/li>\n<li>@jorgeasaurus, @kasperk81, @KirtiRamchandani, @logiclrd, @MartinGC94<\/li>\n<li>@MathiasMagnus, @mikkas456, @powercode, @reabr, @rwp0<\/li>\n<li>@scuzqy, @SufficientDaikon, @ThioJoe, @trackd, @xtqqczze<\/li>\n<li>@yotsuda, @yuunnn<\/li>\n<\/ul>\n<h2>Call to action<\/h2>\n<p>Install PowerShell 7.7 now.<\/p>\n<p>For more information, see the following articles:<\/p>\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/powershell\/scripting\/install\/install-powershell\">Install PowerShell on Windows, Linux, and macOS<\/a><\/li>\n<li><a href=\"https:\/\/learn.microsoft.com\/powershell\/scripting\/whats-new\/what-s-new-in-powershell-77\">What&#8217;s New in PowerShell 7.7<\/a><\/li>\n<\/ul>\n<h2>Looking ahead<\/h2>\n<p>We continue to work on future releases of PowerShell. Preview releases will continue to provide\nearly access to new capabilities and improvements, and your feedback on them helps us ship with\nconfidence.<\/p>\n<p>PowerShell Team<\/p>\n<p><!-- link references --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post announces the General Availability (GA) of PowerShell 7.7, the next Standard Term Support (STS) release.<\/p>\n","protected":false},"author":7527,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[266],"class_list":["post-21034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","tag-powershell-release"],"acf":[],"blog_post_summary":"<p>This post announces the General Availability (GA) of PowerShell 7.7, the next Standard Term Support (STS) release.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/21034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/7527"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=21034"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/21034\/revisions"}],"predecessor-version":[{"id":21035,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/21034\/revisions\/21035"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=21034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=21034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=21034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}