UpdateEverything.psd1
|
@{ RootModule = 'UpdateEverything.psm1' ModuleVersion = '1.3.0' GUID = 'e4e1f3eb-5967-4311-94af-c650fe192e95' Author = 'Brian Kronberg' Copyright = '(c) 2026 Brian Kronberg. Released under the MIT License.' Description = 'Updates a Windows machine through every package manager and update channel it can find, running each as an isolated step so one failure does not stop the rest. Covers winget, the Microsoft Store, Windows Update, Microsoft 365 Apps, Defender, PowerShell modules, npm, pipx, uv, Chocolatey, Scoop, rustup, .NET tools and more. Can register itself as a scheduled task with toast notifications.' # 5.1 is the floor because the script has always supported Windows PowerShell, # and a maintenance tool that cannot run on a machine before it has been # updated is not much use. PowerShellVersion = '5.1' # Declared so the gallery can filter on it, and so a Core-only or # Desktop-only consumer is told before installing rather than after. CompatiblePSEditions = @('Desktop', 'Core') FunctionsToExport = @( 'Update-Everything' 'Initialize-UpdateEverything' 'Register-UpdateEverythingTask' 'Unregister-UpdateEverythingTask' 'Get-UpdateEverythingTask' 'Test-PendingReboot' ) CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @('Update-All') PrivateData = @{ PSData = @{ Tags = @('Windows', 'Update', 'Maintenance', 'winget', 'WindowsUpdate', 'Chocolatey', 'Scoop', 'ScheduledTask', 'PSEdition_Desktop', 'PSEdition_Core') LicenseUri = 'https://github.com/briankronberg/UpdateEverything/blob/main/LICENSE' ProjectUri = 'https://github.com/briankronberg/UpdateEverything' ReleaseNotes = '# 1.3.0 One fix, and it matters on managed machines: UpdateEverything refused to elevate on any machine using a privilege-management broker. ## Elevation is attempted rather than refused Test-ElevationCapability treated "not a member of the local Administrators group" as proof that Windows would not grant elevation. That is false wherever a privilege-management broker is in use -- BeyondTrust, CyberArk EPM, Admin By Request -- because the account is deliberately not in the group and elevates anyway, often per application. On such a machine 1.2.0 is unusable: it refuses before raising a prompt, and tells the user something untrue about their computer. Group membership is now a caution rather than a refusal, warned about before the attempt. The two genuine certainties still refuse, because neither depends on who is asking: UAC switched off, and a packaged PowerShell with no MSI build beside it. ## A failed elevation says more Get-ElevationPolicyNote names a running privilege broker. Those grant or deny elevation per application and leave nothing in the registry, so in 1.2.0 a refusal on such a machine came with no explanation at all. ## Verified The self-elevation handoff is tested end to end for the first time, by a harness in tests/Elevation that runs on a real machine with UAC on and asks for one click. Development machines and CI runners are already administrators, and Windows Sandbox ships with UAC off, so nothing before this could reach the code that once shipped unable to parse. ' } } } |