Finally getting back to this. Here is a powershell script that worked well when still using SCCM:
`# Script based on original from:
$Applist = Get-Content "$($PSScriptRoot)\AppsList_1903.txt" $Capabilities = Get-Content "$($PSScriptRoot)\CapabilitiesList.txt" $Logfile = "$env:SystemRoot\CCM\Logs\RemoveApps_Script.log" Set-Content -Path $Logfile -Value "Remove builtin apps based on $applist"
ForEach ($App in $Applist) { $App = $App.TrimEnd() $PackageFullName = (Get-AppxPackage $App).PackageFullName $ProPackageFullName = (Get-AppxProvisionedPackage -online | where {$_.Displayname -eq $App}).PackageName
if ($PackageFullName) {
"\`r\`nRemoving Package: $App" | Out-File -FilePath $Logfile -Append -Encoding ascii
remove-AppxPackage -package $PackageFullName | Out-File -FilePath $Logfile -Append -Encoding ascii
}
else {
"Unable to find package: $App" | Out-File -FilePath $Logfile -Append -Encoding ascii
}
if ($ProPackageFullName) {
"\`r\`nRemoving Provisioned Package: $ProPackageFullName" | Out-File -FilePath $Logfile -Append -Encoding ascii
Remove-AppxProvisionedPackage -online -packagename $ProPackageFullName | Out-File -FilePath $Logfile -Append -Encoding ascii
}
else {
"Unable to find provisioned package: $App"| Out-File -FilePath $Logfile -Append -Encoding ascii
}
}
ForEach ($Capability in $Capabilities) { "`r`nRemoving capability: $Capability".Replace(" ", " ") | Out-File -FilePath $Logfile -Append Remove-WindowsCapability -online -name $Capability | Out-File -FilePath $Logfile -Append -Encoding ascii }`