Enablement-package upgrades for Windows 11: 24H2 β 25H2 (KB5054156) and 24H2/25H2 β 26H2 (KB5121794) β one small package, one restart
This repository ships two enablement-package upgrade paths. 25H2 (1.0.0) upgrades 24H2 to 25H2 with KB5054156. 26H2 (1.1.0) upgrades 24H2 or 25H2 straight to 26H2 with KB5121794. Both come as a full PowerShell implementation and a reduced cmd.exe alternative, detect the architecture (including the ARM 64-bit Processor case), validate the package with SHA-1 and Authenticode, and keep transcripts. The 26H2 pair additionally refuses LTSC and server editions, supports a true read-only -WhatIf, and ships 57 Pester tests. The 25H2 scripts are unchanged.
# Clone and install
git clone https://github.com/paulmann/Windows-11-25H2-Update-Script.git
cd Windows-11-25H2-Update-Script
# Run as Administrator
.\Upgrade-Win11-To-25H2.ps1
# With custom parameters
.\Upgrade-Win11-To-25H2.ps1 -ForceReboot -RetryCount 5
# One-time bypass execution policy
powershell.exe -ExecutionPolicy Bypass -File ".\Upgrade-Win11-To-25H2.ps1"# Download and run (Administrator required)
curl -L -o Upgrade-Win11-To-25H2.bat "https://github.com/paulmann/Windows-11-25H2-Update-Script/raw/main/Upgrade-Win11-To-25H2.bat"
Upgrade-Win11-To-25H2.bat
# Or run from repository
git clone https://github.com/paulmann/Windows-11-25H2-Update-Script.git
cd Windows-11-25H2-Update-Script
Upgrade-Win11-To-25H2.bat# Read-only preflight: prints build, edition, architecture, package and target; writes nothing
.\Upgrade-Win11-To-26H2.ps1 -WhatIf
# Install and leave the single restart for the maintenance window
.\Upgrade-Win11-To-26H2.ps1 -Reboot NoneREM Or the cmd.exe alternative
Upgrade-Win11-To-26H2.bat /whatif
Upgrade-Win11-To-26H2.bat- π Why Windows 11 25H2?
- β¨ Key Features
- π Installation & Usage
- ποΈ Advanced Features
- π DevOps Integration
- π’ Enterprise Usage
- π Troubleshooting
- π Windows 11 26H2 (KB5121794)
- π€ Contributing
- π License
- π¨βπ» Author & Support
- π― Roadmap
Windows 11 25H2 uses the enablement package (eKB) technology, making the upgrade process incredibly efficient:
# Traditional feature update: 3-5 GB download, 30+ minutes
# Enablement package: ~50 KB download, 1-2 minutes!
# Features are pre-staged in 24H2, just activated by eKB
Target Build: 26200.6718 (from 26100.5074+)
Package: KB5054156- β‘ Lightning Fast: Upgrade completes in under 2 minutes with just a restart
- π¦ Minimal Download: Tiny enablement package vs. multi-GB traditional updates
- π Shared Servicing: Uses same servicing branch as 24H2 for compatibility
- π‘οΈ Production Ready: Leverages Microsoft's proven eKB technology
- π Extended Support: Fresh 24-36 month support lifecycle begins
- Administrator Validation: Automatic privilege checking with clear error messages
- Digital Signature Verification: Validates MSU package authenticity (PowerShell only)
- System Compatibility: Comprehensive build version and architecture checks
- Rollback Protection: Safe failure handling with detailed error reporting
- Architecture Detection: Automatic x64/ARM64 detection with fallback prompts
- Version Checking: Smart detection of current build and upgrade requirements
- Download Optimization: BITS service with HTTP fallback and retry logic
- Installation Control: Silent installation with configurable reboot behavior
- Detailed Logging: Full transcript logging for audit and troubleshooting
- Progress Tracking: Real-time status updates with color-coded messages
- Error Classification: Structured error handling with resolution suggestions
- Exit Code Management: Standard exit codes for automated deployment
- PowerShell Version: Full-featured with advanced error handling and logging
- Batch Version: Simplified alternative that works without ExecutionPolicy changes
- Cross-Platform: Both versions support x64 and ARM64 architectures
- Deployment Ready: Perfect for Group Policy, SCCM, or manual execution
- Operating System: Windows 11, version 24H2 (Build 26100.5074 or later)
- Architecture: x64 (AMD64) or ARM64
- Privileges: Administrator rights required
- Network: Internet connection for package download
- PowerShell: Version 5.1+ (for PowerShell script)
- Execution Policy: RemoteSigned or Unrestricted (for PowerShell script)
# Clone repository
git clone https://github.com/paulmann/Windows-11-25H2-Update-Script.git
cd Windows-11-25H2-Update-Script
# Choose your preferred version:
# PowerShell: .\Upgrade-Win11-To-25H2.ps1
# Batch: .\Upgrade-Win11-To-25H2.bat# PowerShell version
$url = 'https://github.com/paulmann/Windows-11-25H2-Update-Script/raw/main/Upgrade-Win11-To-25H2.ps1'
Invoke-WebRequest -Uri $url -OutFile 'Upgrade-Win11-To-25H2.ps1'
# Batch version
$url = 'https://github.com/paulmann/Windows-11-25H2-Update-Script/raw/main/Upgrade-Win11-To-25H2.bat'
Invoke-WebRequest -Uri $url -OutFile 'Upgrade-Win11-To-25H2.bat'# Using PowerShell Gallery (future)
# Install-Script -Name Windows11-25H2-Update
# Using Chocolatey (future)
# choco install windows11-25h2-updateThis script MUST be run as Administrator. Right-click PowerShell and select Run as Administrator, or use:
# Start PowerShell as Administrator
powershell.exe -Command "Start-Process PowerShell -Verb RunAs"If you encounter "execution of scripts is disabled on this system":
# One-time bypass (recommended)
powershell.exe -ExecutionPolicy Bypass -File ".\Upgrade-Win11-To-25H2.ps1"
# Set for current user
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
# Temporary session policy
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope ProcessThe batch file MUST also run as Administrator:
# Right-click on batch file β "Run as administrator"
# Or from Administrator Command Prompt:
cd /d "C:\path\to\script"
Upgrade-Win11-To-25H2.bat- β No ExecutionPolicy issues - works out of the box
- β Simpler deployment - single .bat file
- β Universal compatibility - works on any Windows system
- β Group Policy friendly - easier to deploy via GPO
- β No signature validation - less security verification
- β Simpler error handling - basic error reporting
# Basic usage with default settings
.\Upgrade-Win11-To-25H2.ps1
# Force immediate reboot after installation
.\Upgrade-Win11-To-25H2.ps1 -ForceReboot
# Suppress reboot (manual reboot required later)
.\Upgrade-Win11-To-25H2.ps1 -NoRestart
# Custom retry settings for unstable networks
.\Upgrade-Win11-To-25H2.ps1 -RetryCount 10 -RetryDelaySec 30
# One-time execution with bypass
powershell.exe -ExecutionPolicy Bypass -File ".\Upgrade-Win11-To-25H2.ps1" -ForceRebootREM Basic usage
Upgrade-Win11-To-25H2.bat
REM The batch version automatically handles:
REM - Architecture detection
REM - Download with retry logic
REM - Installation with progress display
REM - Reboot prompting| Feature | PowerShell Version | Batch Version |
|---|---|---|
| Reboot Control | -Reboot, -ForceReboot, -NoRestart |
Interactive prompt |
| Retry Logic | -RetryCount, -RetryDelaySec |
Fixed (3 attempts, 5s delay) |
| Logging | Full transcript logging | Console output only |
| Signature Check | Yes (Get-AuthenticodeSignature) | No |
| Error Handling | Detailed with recommendations | Basic with codes |
| ExecutionPolicy | Required setup | Not applicable |
Both scripts automatically detect your system architecture:
# Automatic detection logic
if ($env:PROCESSOR_ARCHITECTURE -eq "AMD64") {
$downloadUrl = $x64Url
} elseif ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") {
$downloadUrl = $arm64Url
} else {
# Fallback to user prompt (PowerShell only)
Write-Host "Unable to detect architecture automatically"
$choice = Read-Host "Specify architecture (AMD64/ARM64) [Default: AMD64]"
}Supported URLs:
- x64: KB5054156 for AMD64 architecture
- ARM64: KB5054156 for ARM64 architecture (Surface Pro X, etc.)
PowerShell version includes comprehensive signature validation:
# Signature validation process
$signature = Get-AuthenticodeSignature -FilePath $msuFile
# Verify signature status
if ($signature.Status -ne 'Valid') {
throw "Invalid signature status: $($signature.Status)"
}
# Verify Microsoft as signer
if ($signature.SignerCertificate.Subject -notmatch 'Microsoft Corporation') {
throw "Untrusted signer: $($signature.SignerCertificate.Subject)"
}Robust download handling with configurable retry:
# PowerShell retry logic
for ($attempt = 1; $attempt -le $RetryCount; $attempt++) {
try {
# Try BITS first, fallback to HTTP
if (Get-Service -Name BITS -ErrorAction SilentlyContinue) {
Start-BitsTransfer -Source $Uri -Destination $OutFile
} else {
Invoke-WebRequest -Uri $Uri -OutFile $OutFile -UseBasicParsing
}
break
}
catch {
if ($attempt -lt $RetryCount) {
Start-Sleep -Seconds $RetryDelaySec
} else {
throw "Failed after $RetryCount attempts"
}
}
}PowerShell Logging:
# Comprehensive logging location
$logPath = "C:\ProgramData\Win11-25H2\Upgrade_20251001_142530.log"
# Log levels: Info, Warning, Error, Success
Write-Log "Starting Windows 11 25H2 upgrade process" -Level Info
Write-Log "Administrator privileges confirmed" -Level Success
Write-Log "Retrying download in 5 seconds..." -Level Warning
Write-Log "Installation failed with exit code 2359302" -Level ErrorBatch Logging:
REM Basic console output with timestamps
echo [2025-10-01 14:25:30] [INFO] Starting update process
echo [2025-10-01 14:25:31] [SUCCESS] Administrator privileges confirmed
echo [2025-10-01 14:25:45] [WARNING] Download failed, retrying...
echo [2025-10-01 14:26:15] [SUCCESS] Installation completed successfullyname: Deploy Windows 11 25H2 Update
on:
schedule:
- cron: '0 2 * * 1' # Weekly on Monday 2 AM
workflow_dispatch:
jobs:
deploy-update:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
- name: Deploy PowerShell Version
run: |
powershell.exe -ExecutionPolicy Bypass -File ".\Upgrade-Win11-To-25H2.ps1" -NoRestart
shell: cmd
- name: Deploy Batch Version (Alternative)
run: |
.\Upgrade-Win11-To-25H2.bat
shell: cmdtrigger:
branches:
include:
- main
pool:
name: 'Windows-Agents'
steps:
- powershell: |
.\Upgrade-Win11-To-25H2.ps1 -RetryCount 5 -RetryDelaySec 10
displayName: 'Upgrade to Windows 11 25H2'
- script: |
if errorlevel 3010 (
echo Reboot required - scheduling maintenance window
)
displayName: 'Handle Reboot Requirements'Create a Group Policy Object (GPO) for mass deployment:
# PowerShell script deployment via GPO
# Computer Configuration β Policies β Windows Settings β Scripts (Startup/Shutdown)
# Add: powershell.exe -ExecutionPolicy Bypass -File "\\domain\sysvol\scripts\Upgrade-Win11-To-25H2.ps1"
# Batch file deployment via GPO (simpler)
# Computer Configuration β Policies β Windows Settings β Scripts (Startup/Shutdown)
# Add: \\domain\sysvol\scripts\Upgrade-Win11-To-25H2.batApplication Deployment:
REM Detection Method
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuild | find "26200"
REM Installation Command (PowerShell)
powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File ".\Upgrade-Win11-To-25H2.ps1" -NoRestart
REM Installation Command (Batch - Recommended for SCCM)
Upgrade-Win11-To-25H2.bat
REM Return Codes
REM 0 = Success
REM 3010 = Success, reboot required
REM 1 = FailureConfiguration Windows11_25H2_Update {
Import-DscResource -ModuleName PSDesiredStateConfiguration
Node "localhost" {
Script UpdateWindows11 {
SetScript = {
& "C:\Scripts\Upgrade-Win11-To-25H2.ps1" -NoRestart
}
TestScript = {
$build = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild
return [int]$build -ge 26200
}
GetScript = {
return @{ Result = "Windows 11 25H2 Update Status" }
}
}
}
}# Package the batch file for Intune deployment
# Create intunewin file with Microsoft Win32 Content Prep Tool
# Install command
cmd /c "Upgrade-Win11-To-25H2.bat"
# Detection rule
if ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild -ge 26200) {
Write-Output "Installed"
exit 0
} else {
exit 1
}
# Return codes
# 0 = Success
# 3010 = Success (reboot required)
# Other = Failure<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2">
<Triggers>
<CalendarTrigger>
<StartBoundary>2025-10-01T02:00:00</StartBoundary>
<ScheduleByWeek>
<WeeksInterval>1</WeeksInterval>
<DaysOfWeek>
<Monday />
</DaysOfWeek>
</ScheduleByWeek>
</CalendarTrigger>
</Triggers>
<Actions>
<Exec>
<Command>C:\Scripts\Upgrade-Win11-To-25H2.bat</Command>
</Exec>
</Actions>
<Principals>
<Principal>
<UserId>S-1-5-18</UserId> <!-- SYSTEM account -->
<RunLevel>HighestAvailable</RunLevel>
</Principal>
</Principals>
</Task># PowerShell version writes to Application log
Write-EventLog -LogName Application -Source "Windows11Update" -EventId 1000 -Message "Upgrade started"
# Check upgrade status across domain
Get-ADComputer -Filter * | ForEach-Object {
$build = Invoke-Command -ComputerName $_.Name -ScriptBlock {
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion").CurrentBuild
} -ErrorAction SilentlyContinue
[PSCustomObject]@{
ComputerName = $_.Name
CurrentBuild = $build
Is25H2 = [int]$build -ge 26200
}
} | Export-Csv "Windows11_25H2_Status.csv"REM Problem: "Access denied" or "Administrator privileges required"
REM Solution: Always run as Administrator
REM Check current privileges
net session >nul 2>&1
if %errorlevel% neq 0 (
echo ERROR: Administrator privileges required
echo Right-click and select "Run as administrator"
pause
exit /b 1
)# Problem: "cannot be loaded because running scripts is disabled"
# Solution: Use one-time bypass or adjust policy
# Quick fix - one-time bypass
powershell.exe -ExecutionPolicy Bypass -File ".\Upgrade-Win11-To-25H2.ps1"
# Permanent fix for current user
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
# Check current policy
Get-ExecutionPolicy -List# Problem: Network issues, proxy, or firewall blocking
# Solutions:
# 1. Check internet connectivity
Test-NetConnection -ComputerName catalog.sf.dl.delivery.mp.microsoft.com -Port 443
# 2. Configure proxy (if needed)
netsh winhttp set proxy proxy-server:8080
# 3. Temporarily disable antivirus/firewall
# 4. Use batch version (simpler HTTP handling)# Problem: "Unsupported Windows version"
# Check current build
$build = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion")
Write-Host "Current Build: $($build.CurrentBuild).$($build.UBR)"
# Requirements:
# Minimum: 26100.5074 (Windows 11 24H2)
# Target: 26200.6718 (Windows 11 25H2)
# Solution: Update to 24H2 first via Windows Update| Exit Code | PowerShell | Batch | Description | Solution |
|---|---|---|---|---|
| 0 | β Success | β Success | Installation completed | No action needed |
| 3010 | β Success, reboot required | β Success, reboot required | Installation successful | Reboot system |
| 1 | β General failure | β General failure | Various errors | Check logs |
| 2359302 | β Update not applicable | β Update not applicable | Already installed or incompatible | Verify system version |
| 2359303 | β Installation in progress | β Installation in progress | Another update running | Wait and retry |
| 2147943458 | β Access denied | β Access denied | Insufficient privileges | Run as Administrator |
# System Information
winver # GUI version info
systeminfo | find "OS Version" # Command line version info
Get-ComputerInfo | Select WindowsVersion, WindowsEditionId
# Registry Check
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentBuild
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v UBR
# Architecture Check
echo %PROCESSOR_ARCHITECTURE% # CMD
$env:PROCESSOR_ARCHITECTURE # PowerShell
# Download Test
ping catalog.sf.dl.delivery.mp.microsoft.com
nslookup catalog.sf.dl.delivery.mp.microsoft.com
# Service Status
sc query BITS # BITS service status
sc query wuauserv # Windows Update serviceAdded in 1.1.0. Windows 11 24H2, 25H2 and 26H2 share one core operating system and the same monthly updates, so the enablement-package mechanism works one version further: KB5121794 is a ~174 KB "master switch" that turns 26H2 on with a single restart.
| Host | Script | Package | Result |
|---|---|---|---|
| 24H2 β 25H2 | Upgrade-Win11-To-25H2.ps1 / .bat |
KB5054156 | 26200.x |
| 24H2 β 26H2 | Upgrade-Win11-To-26H2.ps1 / .bat |
KB5121794 | 26300.x |
| 25H2 β 26H2 | Upgrade-Win11-To-26H2.ps1 / .bat |
KB5121794 | 26300.x |
| already 26H2 (26300.x) | either 26H2 script | β | "already at target", exit 0 |
| 26H1 (28000+) / LTSC / Server | none | β | refused: not an in-place path or not in the Applies To list |
24H2 can go straight to 26H2; there is no need to pass through 25H2 first.
| Gate | Rule |
|---|---|
| Version | 24H2 build 26100.9546+ or 25H2 build 26200.9550+ (KB5124010 or later) |
| Edition | Home, Pro, Enterprise, Education, Enterprise multi-session, IoT Enterprise β not LTSC, not Windows Server |
| Architecture | AMD64 or ARM64; ARM is matched first, so ARM 64-bit Processor is not mistaken for x64 |
| Target | any 26300.x is 26H2; build 28000+ (26H1) is refused before anything else |
| Package | pinned Microsoft delivery-CDN URL; SHA-1 fingerprint from the file name plus Authenticode signature; 100,000-byte sanity floor |
There is no execution-policy gate: a policy that would block the script prevents it from starting, and the effective policy is logged for diagnostics.
# Read-only preflight: no directory, no transcript, no download
.\Upgrade-Win11-To-26H2.ps1 -WhatIf
# Install and defer the restart to the maintenance window
.\Upgrade-Win11-To-26H2.ps1 -Reboot None
# Interactive restart after a successful install (default)
.\Upgrade-Win11-To-26H2.ps1
# Force a restart, or tune the download retries
.\Upgrade-Win11-To-26H2.ps1 -Reboot Force
.\Upgrade-Win11-To-26H2.ps1 -RetryCount 5 -RetryDelaySec 15
# Unknown architecture string, or unattended -WhatIf on such a host
.\Upgrade-Win11-To-26H2.ps1 -Architecture ARM64 -WhatIf
# Air-gapped host: local package; the file name must carry KB5121794 and the right architecture
.\Upgrade-Win11-To-26H2.ps1 -PackagePath C:\Packages\Windows11.0-KB5121794-x64_5e20a3cce48d6611b16bdec42b07167f5456586a.msuBatch alternative (elevated Command Prompt): Upgrade-Win11-To-26H2.bat [/whatif]. It applies the
same gates, retries 3 times 5 seconds apart, tries curl.exe and then pwsh/powershell inside each
attempt, checks the SHA-1 with certutil, and always asks before restarting. It does not check
Authenticode and keeps no transcript, so the PowerShell version is the safer choice.
| Parameter | Values | Default | Effect |
|---|---|---|---|
-Reboot |
Prompt, Force, None |
Prompt |
reboot behaviour after a successful install |
-RetryCount |
1-10 | 3 | download attempts; each tries BITS (if present) then HTTP |
-RetryDelaySec |
1-60 | 5 | seconds between attempts |
-Architecture |
Auto, AMD64, ARM64 |
Auto |
force a package; needed for -WhatIf when detection fails |
-PackagePath |
path to an MSU | none | local package; name must carry KB5121794 and match the architecture |
-WhatIf |
switch | off | read-only preflight: no files, no download, no install |
The 26H2 script exits 0 when the package was accepted and staged, or when there was nothing to
do, and 1 on every failure. 3010 is folded into 0, and the build does not change until the
restart: verify CurrentBuild = 26300 (and DisplayVersion = 26H2) after the restart before
recording a host as upgraded. A deployment tool must not treat 0 alone as proof.
Invoke-Pester -Path .\tests -Output Detailed57 Pester tests: unit checks of the gates, per-ladder floors, architecture resolution, package identity, package verification and exit-code mapping, plus fixture runs of the observable paths. The fixtures force their branch inside a copy of the script (target build 1, raised minimum, 26H1 override, faked edition) and assert the absence of download/install markers, so the suite is safe and meaningful on any Windows host. Windows-only; PowerShell 7 + Pester 5.1 or later.
| Architecture | Size (bytes) | SHA-1 |
|---|---|---|
| x64 (AMD64) | 177,535 | 5e20a3cce48d6611b16bdec42b07167f5456586a |
| ARM64 | 178,969 | 77a76caf2d362bb293a4d18058388f2717365abe |
x64: https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/94520a88-858f-4832-a57d-7211f6d84a4e/public/Windows11.0-KB5121794-x64_5e20a3cce48d6611b16bdec42b07167f5456586a.msu
ARM64: https://catalog.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/9d8dc3d0-9cbf-4eb1-9411-722e3e6a19b3/public/Windows11.0-KB5121794-arm64_77a76caf2d362bb293a4d18058388f2717365abe.msu
Both were downloaded and verified on 2026-10-25: SHA-1 matches the fingerprint published in the file
name and the Authenticode signature is Microsoft Corporation. The package is delivered through
Windows Update and WSUS (product "Windows 11", classification "Upgrades") and is not offered in
the Microsoft Update Catalog,
which is why the URLs are pinned; if they ever stop working, use -PackagePath with a stored copy.
26H2 limits: no rollback or uninstall; the edition gate reads two registry values, so a renamed SKU can pass; the 26H2 script was executed only on PowerShell 7.6.6 (the file is accepted by the Windows PowerShell 5.1 parser); the install path was not executed during development β the decision paths, the download/verification chain and both package files were.
We welcome contributions! Here's how to get involved:
# Fork and clone the repository
git clone https://github.com/yourusername/Windows-11-25H2-Update-Script.git
cd Windows-11-25H2-Update-Script
# Test both versions
# PowerShell testing
powershell.exe -ExecutionPolicy Bypass -File ".\Upgrade-Win11-To-25H2.ps1" -WhatIf
# Batch testing in test environment
.\Upgrade-Win11-To-25H2.bat- Fork the repository
- Create a feature branch (
git checkout -b feature/awesome-feature) - Test thoroughly on multiple Windows 11 systems
- Update documentation if needed
- Commit changes (
git commit -m 'Add awesome feature') - Push to branch (
git push origin feature/awesome-feature) - Open a Pull Request
- β PowerShell: Follow PowerShell best practices and PSScriptAnalyzer rules
- β Batch: Use modern CMD syntax, proper error handling
- β Documentation: Update README.md for new features
- β Testing: Test on both x64 and ARM64 if possible
- β Compatibility: Maintain Windows 11 24H2+ compatibility
- Proxy Support: Enhanced network configuration handling
- Localization: Multi-language support for error messages
- GUI Version: Windows Forms or WPF interface
- Reporting: HTML/JSON output formats
- Integration: Additional deployment methods (Chocolatey, winget)
This project is licensed under the PolyForm Noncommercial License 1.0.0 - see the LICENSE file for details.
Mikhail Deynekin
- π Website: deynekin.com
- π§ Email: mid1977@gmail.com
- π GitHub: @paulmann
- π Documentation: Read this README thoroughly
- π Bug Reports: Open an issue
- π‘ Feature Requests: Request features
- π¬ Questions: Check Discussions
- Microsoft-Activation-Scripts - Windows activation tools
- Windows11Debloat - Remove Windows 11 bloatware
- PowerShell-Suite - PowerShell utilities collection
- GUI Version: User-friendly Windows Forms interface
- Package Managers: Chocolatey and winget support
- Proxy Support: Enhanced corporate network compatibility
- Scheduling: Built-in task scheduler integration
- Rollback: Automated rollback capabilities
- Multi-Language: Localized error messages and UI
- v1.1.0 (2026-10-25):
- β
Added Windows 11 26H2 support (enablement package KB5121794) for 24H2 and 25H2 hosts:
Upgrade-Win11-To-26H2.ps1andUpgrade-Win11-To-26H2.bat - β Edition gate (LTSC editions and Windows Server refused), per-ladder prerequisite floor (24H2 26100.9546, 25H2 26200.9550), 26H1 refusal
- β
Real
-WhatIfpreflight (writes nothing, refuses instead of prompting), staged-vs-verified exit-code contract - β
Local package identity check (
KB5121794+ architecture), BITS job cleanup, batch download fallback inside each attempt - β 57 Pester tests, safe on any host, covering every gate and the package verification
- β
Added Windows 11 26H2 support (enablement package KB5121794) for 24H2 and 25H2 hosts:
- v1.0.0 (2025-10-01):
- β Initial PowerShell version with full feature set
- β Added Batch file alternative for ExecutionPolicy-free deployment
- β Comprehensive documentation and examples
- β Enterprise deployment guides
- β CI/CD integration examples
| Feature | Current Status | PowerShell | Batch | GUI (Planned) |
|---|---|---|---|---|
| Architecture Detection | β Complete | β | β | β |
| Download with Retry | β Complete | β | β | β |
| Digital Signature Check | β | β | β | |
| Comprehensive Logging | β | β | ||
| Parameter Support | β | β | β | |
| Progress Reporting | π§ Basic | β | ||
| 26H2 (KB5121794) | β Complete | β | β | β |
| Rollback Support | β Planned | π§ | π§ | π§ |
| Proxy Support | β Planned | π§ | π§ | π§ |
Legend: β
Complete |
Windows 11 25H2 Update Script - Making Windows updates fast, reliable, and enterprise-ready πβ¨