Bloatware Cleanup Script

article #1613, updated 10 days ago

This one is set up to remove many different bloatware items found on machines from HP, Dell, and Lenovo. A work in progress. Uses both APPX methods and winget.

#Begin Script

# Set up to run winget if needed...
"Set up to run Winget if needed..."

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# Function to find the path to winget.exe
function Find-WinGet-Path {
    # Get the WinGet path (for use when running in SYSTEM context).
    $WinGetPathToResolve = Join-Path -Path $ENV:ProgramFiles -ChildPath 'WindowsApps\Microsoft.DesktopAppInstaller_*_*__8wekyb3d8bbwe'
    $ResolveWinGetPath = Resolve-Path -Path $WinGetPathToResolve | Sort-Object {
        [version]($_.Path -replace '^[^\d]+_((\d+\.)*\d+)_.*', '$1')
    }
    if ($ResolveWinGetPath) {
        # If we have multiple versions - use the latest.
        $WinGetPath = $ResolveWinGetPath[-1].Path
    }

    # Get the User-Context WinGet exe location.
    $WinGetExePath = Get-Command -Name winget.exe -CommandType Application -ErrorAction SilentlyContinue

    # Select the correct WinGet exe
    if (Test-Path -Path (Join-Path $WinGetPath 'winget.exe')) {
        # Running in SYSTEM-Context.
        $WinGet = Join-Path $WinGetPath 'winget.exe'
    } elseif ($WinGetExePath) {
        # Get User-Context if SYSTEM-Context not found.
        $WinGet = $WinGetExePath.Path
    } else {
        Write-Output 'WinGet not Found!'
        Stop-Transcript
        exit 1
    }

    # Return WinGet path
    return ($WinGet -replace '\winget.exe','')
}

Function Add-PathVariable {
    param (
        [string]$addPath
    )
    if (Test-Path $addPath){
        $regexAddPath = [regex]::Escape($addPath)
        $arrPath = $env:Path -split ';' | Where-Object {$_ -notMatch 
"^$regexAddPath\\?"}
        $env:Path = ($arrPath + $addPath) -join ';'
    } else {
        Throw "'$addPath' is not a valid path."
    }
}

Add-PathVariable (Find-Winget-Path)

# Do APPX removals...
"Do APPX removals..."

# First set up item list
$RemovalItems =  @(
"Microsoft.Advertising.Xaml",
"Microsoft.BingWeather",
"Microsoft.BingFinance",
"Microsoft.BingNews",
"Microsoft.BingSports",
"Microsoft.SkypeApp",
"Microsoft.Teams.Classic",
"Microsoft.WindowsCommunicationsApps",
"Microsoft.XboxGameOverlay",
"Microsoft.XboxGamingOverlay",
"Microsoft.XboxGameCallableUI",
"Microsoft.Xbox.TCUI",
"Microsoft.XboxApp",
"Microsoft.XboxSpeechToTextOverlay",
"Microsoft.XboxIdentityProvider",
"Microsoft.YourPhone",
"Microsoft.ZuneVideo",
"Microsoft.ZuneMusic",
"MicrosoftTeams",
".DellDigitalDelivery",
".DellSupportAssistforPCs",
".DellUpdate",
".Power2GoforDell",
".PowerDirectorforDell",
".DellDigitalDelivery",
".DellWatchgdogTimer",
".DelltypeCStatus",
".DiscoverHPTouchpointManager",
".HPDesktopSupportUtilities",
".HPEasyClean",
".HPJumpStart",
".HPPCHardwareDiagnosticsWindows",
".HPPowerManage",
".HPPrivacySettings",
".HPProgrammableKey",
".HPQuickDrop",
".myHP",
".HPSupportAssistant",
".HPSystemInformation",
".HPWorkWell",
".HPAccessoryCenter"
)

$ProvisionedItems = Get-AppxProvisionedPackage -Online
foreach ($ProvItem in $ProvisionedItems) {
	foreach ($RemItem in $RemovalItems) {
		If ($ProvItem.DisplayName -like "*$RemItem*") {
			Write-Host "Deprovisioning:" $ProvItem.DisplayName
			$error.clear()
			try {
				Remove-AppXProvisionedPackage -Online -PackageName $ProvItem.PackageName -ErrorAction SilentlyContinue | Out-Null
			}
			catch { "Failed: Microsoft does not allow, or other error." }
			if (!$error) { "Succeeded!" }
		}
	}
}

$InstalledItems = Get-AppxPackage -AllUsers
foreach ($InstItem in $InstalledItems) {
	foreach ($RemItem in $RemovalItems) {
		if ($InstItem.Name -like "*$RemItem*") {
			Write-Host "User-level removal operation:" $InstItem.Name
			$error.clear()
			try {
				Get-AppxPackage $InstItem.Name -AllUsers | Remove-AppxPackage -Allusers -ErrorAction SilentlyContinue | Out-Null
			}
			catch { "Failed: Microsoft does not allow, or other error." }
			if (!$error) { "Succeeded!" }
		}
	}
}

# And now do winget removals...
"And now do winget removals..."

# HP bloatware
Winget Uninstall "HP Client Security Manager" --accept-source-agreements --silent
Winget Uninstall "HP Connection Optimizer" --accept-source-agreements --silent
Winget Uninstall "HP Desktop Support Utilities" --accept-source-agreements --silent
Winget Uninstall "HP Documentation" --accept-source-agreements --silent
Winget Uninstall "HP Easy Clean" --accept-source-agreements --silent
Winget Uninstall "HP Insights" --accept-source-agreements --silent
Winget Uninstall "HP Insights Analytics" --accept-source-agreements --silent
Winget Uninstall "HP JumpStart Bridge" --accept-source-agreements --silent
Winget Uninstall "HP JumpStart Launch" --accept-source-agreements --silent
Winget Uninstall "HP Notifications" --accept-source-agreements --silent
Winget Uninstall "HP One Agent" --accept-source-agreements --silent
Winget Uninstall "HP PC Hardware Diagnostics Windows" --accept-source-agreements --silent
Winget Uninstall "HP Performance Advisor" --accept-source-agreements --silent
Winget Uninstall "HP PhoneWise Driver" --accept-source-agreements --silent
Winget Uninstall "HP Privacy Settings" --accept-source-agreements --silent
Winget Uninstall "HP Quickdrop" --accept-source-agreements --silent
Winget Uninstall "HP Security Update Service" --accept-source-agreements --silent
Winget Uninstall "HP Sure Recover" --accept-source-agreements --silent
Winget Uninstall "HP Sure Run Module" --accept-source-agreements --silent
Winget Uninstall "HP Wolf Security - Console" --accept-source-agreements --silent
Winget Uninstall "HP System Default Settings" --accept-source-agreements --silent
Winget Uninstall "HP Velocity" --accept-source-agreements --silent
Winget Uninstall "HP WorkWise Service" --accept-source-agreements --silent
Winget Uninstall "myHP" --accept-source-agreements --silent

# Windows Bloatware
Winget Uninstall "MSN Weather" --accept-source-agreements --silent
Winget Uninstall "Get Help" --accept-source-agreements --silent
Winget Uninstall "Microsoft Tips" --accept-source-agreements --silent
Winget Uninstall "Microsoft 365 (office)" --accept-source-agreements --silent
Winget Uninstall "Solitaire & Casual Games" --accept-source-agreements --silent
Winget Uninstall "Mixed Reality Portal" --accept-source-agreements --silent
Winget Uninstall "Microsoft People" --accept-source-agreements --silent
Winget Uninstall "Store Experience Host" --accept-source-agreements --silent
Winget Uninstall "Xbox TCUI" --accept-source-agreements --silent
Winget Uninstall "Xbox Console Companion" --accept-source-agreements --silent
Winget Uninstall "Xbox Game Bar Plugin" --accept-source-agreements --silent
Winget Uninstall "Xbox Game Bar" --accept-source-agreements --silent
Winget Uninstall "Xbox Identity Provider" --accept-source-agreements --silent
Winget Uninstall "Xbox Game Speech Window" --accept-source-agreements --silent
Winget Uninstall "Groove Music" --accept-source-agreements --silent
Winget Uninstall "Movies & TV" --accept-source-agreements --silent
Winget Uninstall Microsoft.Teams.Classic --accept-source-agreements --silent
Winget Uninstall MicrosoftTeams --accept-source-agreements --silent
Winget Uninstall "Microsoft Whiteboard" --accept-source-agreements --silent
Winget Uninstall "Your Phone" --accept-source-agreements --silent
Winget Uninstall "Groove Music" --accept-source-agreements --silent

# Additionals
Winget Uninstall "Partner Promo" --accept-source-agreements --silent
Winget Uninstall "Translator" --accept-source-agreements --silent
Winget Uninstall "Microsoft Solitaire Collection" --accept-source-agreements --silent
Winget Uninstall "Microsoft People" --accept-source-agreements --silent
Winget Uninstall "Skype" --accept-source-agreements --silent
Winget Uninstall "Microsoft Pay" --accept-source-agreements --silent
Winget Uninstall "Xbox" --accept-source-agreements --silent
Winget Uninstall "Microsoft 365 - es-es" --accept-source-agreements --silent
Winget Uninstall "Microsoft 365 - fr-fr" --accept-source-agreements --silent
Winget Uninstall "Waves MaxxAudio Pro For Dell 2022" --accept-source-agreements --silent
Winget Uninstall "Mail and Calendar" --accept-source-agreements --silent
Winget Uninstall "Media Suite Essentials for Dell" --accept-source-agreements --silent
Winget Uninstall "Power2Go for Dell" --accept-source-agreements --silent
Winget Uninstall "PowerDirector for Dell" --accept-source-agreements --silent
Winget Uninstall "Power Media Player For Dell" --accept-source-agreements --silent
Winget Uninstall "Dell Watchdog Timer" --accept-source-agreements --silent
Winget Uninstall "Dell SupportAssist Remediation" --accept-source-agreements --silent
Winget Uninstall "Dell SupportAssist OS Recovery Plugin for Dell Update" --accept-source-agreements --silent
Winget Uninstall "Dell SupportAssist OS Recovery Plugin" --accept-source-agreements --silent
Winget Uninstall "Dell SupportAssist" --accept-source-agreements --silent
Winget Uninstall "Dell Command | Update for Windows 10" --accept-source-agreements --silent
Winget Uninstall "Dell Digital Delivery Services" --accept-source-agreements --silent

# More HP, best last
Winget Uninstall "HP Easy Clean" --accept-source-agreements --silent
Winget Uninstall "myHP" --accept-source-agreements --silent
Winget Uninstall "HP Sure Recover" --accept-source-agreements --silent
Winget Uninstall "HP Sure Run Module" --accept-source-agreements --silent
Winget Uninstall "HP Performance Advisor" --accept-source-agreements --silent
winget Uninstall "HP One Agent" --accept-source-agreements --silent
winget Uninstall "HP Security Update Service" --accept-source-agreements --silent
winget Uninstall "HP Client Security Manager" --accept-source-agreements --silent

# End script

Categories: