# Check what user-facing apps are actually available
$all = Get-AppxPackage -AllUsers -ErrorAction SilentlyContinue
$userFacing = $all | Where-Object { $_.Name -notmatch '^Microsoft\.(NET|VCLibs|UI\.Xaml|WindowsApp|Services|Advertising|Office\.(Actions|Push)|AAD|Account|Bio|Cred|Lock|Win32|WidgetsPlatform|AsyncText|ApplicationCompat|AIFabric|DesktopApp|StorePurchase|SecHealth|ECApp|HE[IV]|AV1|AVC|MPEG|Raw|VP9|Webp|Web[Mm]|M365|OneDrive|StartExp|MicrosoftEdge[^.]|Window\.CBS)' -and $_.Name -notmatch '^(Microsoft)?Windows\.' -and $_.Name -notmatch '^(aimgr|InputApp|NcsiUwpApp|MicrosoftWindows\.|MicrosoftCorporationII|KONICAMINOLTA|Windows\.)' -and $_.Name -notmatch '^[0-9a-f]{8}-' -and $_.Name -notmatch '^(E2A4F912|F46D4000|1527c705|c5e2524a)' -and $_.IsFramework -ne $true }
Write-Output "=== User-facing apps on this machine ==="
$userFacing | Sort-Object Name -Unique | ForEach-Object {
    Write-Output "$($_.Name) | $($_.Publisher) | $($_.PackageFamilyName)"
}
Write-Output ""
Write-Output "Count: $($userFacing | Sort-Object Name -Unique | Measure-Object | Select-Object -ExpandProperty Count)"
