Hay-RemoveApps.psm1
Function Remove-Apps { #SafeApps contains apps that shouldn't be removed, or just can't and cause errors $SafeApps = "AAD.brokerplugin|accountscontrol|apprep.chxapp|assignedaccess|asynctext|bioenrollment|capturepicker|cloudexperience|contentdelivery|desktopappinstaller|ecapp|getstarted|immersivecontrolpanel|lockapp|net.native|oobenet|parentalcontrols|PPIProjection|sechealth|secureas|shellexperience|startmenuexperience|vclibs|xaml|XGpuEject" $GoodApps = "calculator|sticky|store|windows.photos|soundrecorder|mspaint|people|skype|oneNote|screensketch|microsoftedge" If ($Apps) { $RemoveApps = Get-AppxPackage -allusers | where-object {$_.name -notmatch $SafeApps} $RemovePrApps = Get-AppxProvisionedPackage -online | where-object {$_.displayname -notmatch $SafeApps} ForEach ($RemovedApp in $RemoveApps) { Write-Host Removing app package: $RemovedApp.name Remove-AppxPackage -package $RemovedApp -erroraction silentlycontinue } ForEach ($RemovedPrApp in $RemovePrApps) { Write-Host Removing provisioned app $RemovedPrApp.displayname Remove-AppxProvisionedPackage -online -packagename $RemovedPrApp.packagename -erroraction silentlycontinue } } Else { $SafeApps = "$SafeApps|$GoodApps" $RemoveApps = Get-AppxPackage -allusers | where-object {$_.name -notmatch $SafeApps} $RemovePrApps = Get-AppxProvisionedPackage -online | where-object {$_.displayname -notmatch $SafeApps} ForEach ($RemovedApp in $RemoveApps) { Write-Host Removing app package: $RemovedApp.name Remove-AppxPackage -package $RemovedApp -erroraction silentlycontinue } ForEach ($RemovedPrApp in $RemovePrApps) { Write-Host Removing provisioned app $RemovedPrApp.displayname Remove-AppxProvisionedPackage -online -packagename $RemovedPrApp.packagename -erroraction silentlycontinue } } } |