NewsDeveloper ToolsProgramming Languages

PowerShell 7.7 Ships: UUID v7 Default, MSI Gone

PowerShell 7.7 GA dropped on November 10 — the same day support expired for 7.4 and 7.5. The timing is deliberate: both older versions hit end-of-life when their underlying .NET runtimes did. The new release runs on .NET 11, removes the Windows MSI installer for good, and silently changes how New-Guid works. That last one is the one that will catch you off guard.

New-Guid Now Returns a UUID v7 — Not What You Think

The biggest behavioral change in 7.7 is not behind a flag and ships no warning: New-Guid now generates Version 7 UUIDs by default instead of Version 4. UUID v4 is fully random across all 128 bits. UUID v7 embeds a millisecond-precision timestamp in the first 48 bits and is designed to sort chronologically.

That matters if your scripts use New-Guid to generate security tokens, random seeds, session IDs, or anything that depends on unpredictability. Those scripts are now producing sortable, timestamp-based identifiers. No error, no warning — just subtly wrong output.

The fix is a one-liner substitution:

# 7.7 default: time-sortable UUID v7
New-Guid

# Explicit random UUID v4 (old behavior — use this for tokens)
[guid]::NewGuid()

To find affected scripts before they cause problems in production, run this across your repo:

Get-ChildItem -Recurse -Filter *.ps1 | Select-String "New-Guid"

The UUID v7 default is actually the right call for most use cases. Database inserts with v7 run 37% faster on PostgreSQL under concurrent load, and index sizes shrink 20–30% because sortable IDs cause far less B-tree fragmentation. If you are using GUIDs as database primary keys, 7.7 just made your schema faster without you doing anything. The edge case to fix is security-sensitive code that needs randomness.

The Windows MSI Installer Is Permanently Gone

Starting with 7.7, there is no MSI package. MSIX is the only option on Windows. This was previewed in the 7.6 release cycle — 7.7 makes it permanent and removes the fallback entirely.

The practical impact hits enterprise environments hardest: deployment scripts, Intune configurations, SCCM packages, and Group Policy-based installs that reference an MSI endpoint will stop working. There is also a known side-by-side installation bug (winget issue #6333) where upgrading from an MSI-installed 7.4 or 7.5 via winget upgrade installs the MSIX alongside instead of replacing it.

The recommended path for enterprise upgrades: uninstall the MSI version first, then install fresh.

# Fresh install via winget (MSIX)
winget install --id Microsoft.PowerShell --source winget

# Check result
$PSVersionTable

7.4 and 7.5 Are Unsupported as of Yesterday

Both versions hit their end-of-life on November 10 — the same date PowerShell 7.7 GA released. PowerShell 7.4 was an LTS release built on .NET 8, which ended support yesterday. PowerShell 7.5 was built on .NET 9, which also expired. If you are on either version, you are now running unsupported software with no security patches coming.

Your two options: move to 7.7 for the latest features (STS, 18 months support), or move to 7.6 LTS for a stable track supported until November 2028. The 7.6.10 LTS update also dropped on November 10 and fixes MSIX PATH issues — if you are not ready to jump to 7.7, 7.6.10 is the safe upgrade.

What Else Is New

Three quality-of-life additions worth noting:

  • New-TemporaryDirectory — creates a uniquely named temp folder under your system temp path. Accepts a -Prefix parameter. The key advantage: it works in Constrained Language Mode, where calling [System.IO.Path]::GetTempPath() directly is blocked.
  • Join-Path -Extension — append a file extension without string manipulation.
  • WildcardPattern.ToRegex() — converts PowerShell wildcards into .NET regex patterns, useful when bridging PS wildcard matching with regex-based tooling.

On the security side, 7.7 tightens argument and frame validation in PowerShell remoting, restores schema validation in CIM cmdlets, and extends implicit remoting protections to resolved aliases. For managed, locked-down environments, the new WLDP EnableFileOnlyEntry alignment means interactive sessions will be blocked on systems where the lockdown policy requires it.

How to Get It

The official announcement is on the PowerShell Team blog. Full details on what changed are in the What’s New in PowerShell 7.7 docs. For the EOL timeline on 7.4 and 7.5, EndpointWeekly has the full breakdown.

winget upgrade --id Microsoft.PowerShell
ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in:News