Skip to content

Instantly share code, notes, and snippets.

@btstevens
Created September 11, 2023 18:34
Show Gist options
  • Save btstevens/fc69c04b54e83238eeab0a67824eca07 to your computer and use it in GitHub Desktop.
Save btstevens/fc69c04b54e83238eeab0a67824eca07 to your computer and use it in GitHub Desktop.
win11_latest
# List of built-in apps to remove
$UninstallPackages = @(
#"Microsoft.WindowsAlarms"
#"Microsoft.WindowsCalculator"
#"Microsoft.WindowsCamera"
#"AppUp.ThunderboltControlCenter"
"Microsoft.Getstarted"
#"Microsoft.Microsoft3DViewer"
"Clipchamp.Clipchamp"
"Microsoft.WindowsFeedbackHub"
"Microsoft.GetHelp"
"Microsoft.Getstarted"
"Microsoft.BingNews"
"Microsoft.WindowsMaps"
#"MicrosoftTeams"
"Microsoft.MicrosoftSolitaireCollection"
"Microsoft.MicrosoftStickyNotes"
#"Microsoft.Paint"
#"Microsoft.MSPaint"
"Microsoft.Windows.Photos"
"Microsoft.Todos"
"Microsoft.BingWeather"
#"Microsoft OneDrive"
#"Microsoft.Whiteboard"
#"Microsoft.ScreenSketch"
"Microsoft.MicrosoftOfficeHub"
#"Microsoft.MixedReality.Portal"
"Microsoft.GamingApp"
"Microsoft.Xbox.TCUI"
"Microsoft.XboxApp"
"Microsoft.XboxGameOverlay"
"Microsoft.XboxGamingOverlay"
"Microsoft.XboxIdentityProvider"
"Microsoft.XboxSpeechToTextOverlay"
#"Microsoft.WindowsSoundRecorder"
#"Microsoft.SkypeApp"
#"Microsoft.Office.OneNote"
#"Microsoft.WindowsNotepad"
"Microsoft.YourPhone"
"Microsoft.ZuneVideo"
"MicrosoftCorporationII.QuickAssist"
#"MicrosoftTeams"
"microsoft.windowscommunicationsapps"
"Microsoft.Wallet"
"Microsoft.OneConnect"
"Microsoft.People"
"Microsoft.549981C3F5F10"
"MicrosoftWindows.Client.WebExperience"
"Microsoft.StorePurchaseApp"
)
function uninstall-windows11-apps {
[CmdletBinding()]
param (
[Parameter(Mandatory=$true, Position=0)]
[string[]]$UninstallPackages
)
begin {
$InstalledPackages = Get-AppxPackage -AllUsers | Where-Object {($UninstallPackages -contains $_.Name)}
$ProvisionedPackages = Get-AppxProvisionedPackage -Online | Where-Object {($UninstallPackages -contains $_.DisplayName)}
}
process {
# Remove windows capability
#Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Browser.InternetExplorer"} | Remove-WindowsCapability -Online
#Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Hello.Face"} | Remove-WindowsCapability -Online
#Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Language.Handwriting"} | Remove-WindowsCapability -Online
#Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "MathRecognizer"} | Remove-WindowsCapability -Online
#Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Media.WindowsMediaPlayer"} | Remove-WindowsCapability -Online
#Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Print.Management.Console"} | Remove-WindowsCapability -Online
# Add windows capability
#Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability -Online
# Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Print.Fax.Scan"} | Remove-WindowsCapability -Online
# Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "OpenSSH.Client"} | Remove-WindowsCapability -Online
# Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Microsoft.Windows.WordPad"} | Remove-WindowsCapability -Online
# Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "Microsoft.Wallpapers.Extended"} | Remove-WindowsCapability -Online
# Get-WindowsCapability -Online | Where-Object -property State -eq "Installed" | Where {$_.name -match "OpenSSH"} | Remove-WindowsCapability -Online
#Disable-WindowsOptionalFeature -Online -featurename "Printing-PrintToPDFServices-Features" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "SearchEngine-Client-Package" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "WorkFolders-Client" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "Printing-Foundation-Features" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "Printing-Foundation-InternetPrinting-Client" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "MicrosoftWindowsPowerShellV2Root" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "MicrosoftWindowsPowerShellV2" -NoRestart
#Disable-WindowsOptionalFeature -Online -featurename "MediaPlayback" -NoRestart
# Remove provisioned packages first
ForEach ($ProvPackage in $ProvisionedPackages) {
Write-Host -Object "Attempting to remove provisioned package: [$($ProvPackage.DisplayName)]..."
Try {
$Null = Remove-AppxProvisionedPackage -PackageName $ProvPackage.PackageName -Online -ErrorAction Stop
Write-Host -Object "Successfully removed provisioned package: [$($ProvPackage.DisplayName)]"
}
Catch {Write-Warning -Message "Failed to remove provisioned package: [$($ProvPackage.DisplayName)]"}
}
# Remove appx packages
ForEach ($AppxPackage in $InstalledPackages) {
Write-Host -Object "Attempting to remove Appx package: [$($AppxPackage.Name)]..."
Try {
$Null = Remove-AppxPackage -Package $AppxPackage.PackageFullName -AllUsers -ErrorAction Stop
Write-Host -Object "Successfully removed Appx package: [$($AppxPackage.Name)]"
}
Catch {Write-Warning -Message "Failed to remove Appx package: [$($AppxPackage.Name)]"}
}
}
}
uninstall-windows11-apps -UninstallPackages $UninstallPackages
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment