* Update Invoke-WPFGetInstalled.ps1 * Update Install-WinUtilWinget.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilWinget.ps1 * Delete functions/private/Test-WinUtilPackageManager.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilWinget.ps1 * Update Install-WinUtilChoco.ps1 * Update Invoke-WPFGetInstalled.ps1 * Update Invoke-WPFGetInstalled.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilWinget.ps1 * Update Install-WinUtilWinget.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilWinget.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilWinget.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilChoco.ps1 * Update Install-WinUtilWinget.ps1 * Fixed lastrun.json * refactor: remove PackageManagers enum and unused custom exception classes * Update Invoke-WPFUIElements.ps1 * Update Get-WinUtilSelectedPackages.ps1 * Update Set-Preferences.ps1 * Update main.ps1 * Complete package manager enum removal Use string package-manager preferences throughout the remaining helpers and focused tests. Restore the existing Winget install flow and package-manager probe helper so PR 4606 keeps the current WinGet repair method. * Fix string keyed package split --------- Co-authored-by: Chris Titus <contact@christitus.com>
Chris Titus Tech's Windows Utility
A curated compilation of Windows system tasks streamline installs, debloat with tweaks, troubleshoot with config, and configure Windows updates. Run it fresh on every new Windows install.
Quick Start
WinUtil must be run as Administrator Because it performs system-wide changes.
Open PowerShell or Terminal as admin, then run:
Stable Branch (recommended)
irm https://christitus.com/win | iex
Development Branch
irm https://christitus.com/windev | iex
How to open an admin terminal
- Start menu: Right-click Start → Windows PowerShell (Admin) or Terminal (Admin)
- Search: Press the
Windows key, and typePowerShellorTerminal, thenCtrl + Shift + Enter
Automation / Presets
Apply a predefined configuration without manual selection:
& ([ScriptBlock]::Create((irm https://christitus.com/win))) -Preset Standard
| Preset | Description |
|---|---|
Standard |
Balanced defaults for most users |
Minimal |
Minimal changes to suit every user |
Advanced |
Deep tweaks for power users |
To view exactly what each preset does, see: https://github.com/ChrisTitusTech/winutil/blob/main/config/preset.json
Build & Develop
See https://github.com/ChrisTitusTech/winutil/blob/main/.github/CONTRIBUTING.md
Resources
Support
- Leave a ⭐ to show support!
- EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox
Sponsors
These are the sponsors that help keep this project alive with monthly contributions.











Contributors
Thanks to everyone who has contributed time and effort to this project. Keep rocking 🍻
