Skip to main content

Remove-PUA

Overview

The Remove-PUA.ps1 script is designed to manage and remove bloatware packages on Windows systems. It provides functionality to list and remove pre-installed packages using curated lists from a trusted repository.

EXERCISE EXTREME CAUTION - Removing system components may cause system instability.

Requirements

This script requires an internet connection to fetch the list of potentially unwanted applications (PUA) from a remote repository. It also requires the Strapper module, which will be installed and updated automatically if not already present.

Process

The script operates by first setting up the necessary environment and fetching the list of PUAs from a remote URL or the -PuaListSource you provide. It then processes the installed packages on the system and performs actions based on the provided parameters. The script can list installed packages, remove all packages from specified categories, exclude specific packages from removal, or remove specific packages by name.

Payload Usage

The script is executed using PowerShell and requires specific parameters to perform its operations. Below are examples of how to use the script:

# List all installed Appx packages
.\Remove-PUA.ps1 -ListBloatware

# Remove all Microsoft bloatware packages
.\Remove-PUA.ps1 -RemoveAll -Category MsftBloatApps

# Remove all bloatware except Solitaire
.\Remove-PUA.ps1 -RemoveAll -Except 'Microsoft.SolitaireCollection'

# Remove specific packages by name
.\Remove-PUA.ps1 -Remove 'Microsoft.BingWeather', 'Microsoft.GetHelp'

# Using a downloadable JSON URL:
.\Remove-PUA.ps1 -PuaListSource 'https://my.cdn.example/pua.json' -ListBloatware

# Using a local JSON file:
.\Remove-PUA.ps1 -PuaListSource 'C:\ProgramData\_Automation\Script\PUA\pua.json' -ListBloatware

Parameters

ParameterAliasRequiredDefaultTypeDescription
RemoveAllTrueSwitchRemove all packages from specified categories (default: both Microsoft and ThirdParty).
CategoryFalseStringFilter removal to specific categories (MsftBloatApps/ThirdPartyBloatApps).
ExceptFalseString[]Exclude specific packages from removal operations.
RemoveTrueString[]Remove specific packages by name (bypasses category filters).
ListBloatwareTrueSwitchList installed packages without making changes.
PuaListSourceFalseremote URLStringOptional source for an alternate PUA list JSON. When provided, the script will use the specified local JSON file or downloadable URL instead of the default PUA list.

Note : The optional JSON file must contain only the following two supported categories: "MsftBloatApps" and "ThirdPartyBloatApps". All bloatware package names must be listed under one of these categories, as the script only processes these two categories. Any other categories included in the JSON file will not be recognized or processed by the script.

Output

  • .\Remove-PUA-log.txt
  • .\Remove-PUA-error.txt

PUA List

PUA List

Changelog

2026-08-12

  • Added another parameter PuaListSource. Its an Optional source for an alternate PUA list JSON. When provided, the script will use the specified local JSON file or downloadable URL instead of the default PUA list.
  • Updated the ListBloatware parameter to list only the packages matching the PUA list provided through the optional JSON file or, if not specified, the default PUA list.

2025-04-10

  • Initial version of the document