PowerShell Get-AppxPackage -PackageTypeFilter参数相关两问
Get-AppxPackage 中 -PackageTypeFilter 参数说明及闲置应用包清理方案 1. 参数作用逻辑
Windows下的Appx/MSIX应用采用分包部署机制,不同包承担不同职责,-PackageTypeFilter是cmdlet内置的前置过滤参数,只会从系统包存储库中拉取你指定类型的包,比执行完查询再用Where-Object做属性过滤效率更高。参数采用多值或匹配逻辑,传入多个类型时会返回所有符合任意一个指定类型的包,各有效值对应的包类型如下:
Main:应用核心主包,包含应用的可执行入口、核心业务逻辑,开始菜单里的应用快捷方式就指向这个包。每个正常安装的应用对应唯一的主包,你之前仅指定Main时只返回1个ZuneMusic结果,就是Groove音乐(ZuneMusic是它的内部代号)的主程序包,这类包的属性中IsBundle、IsResourcePackage、IsFramework均为False。Bundle:捆绑安装包,本身不包含可执行程序内容,只是个打包容器,会把不同架构(x86/x64/ARM)的主包、不同场景的资源包整合到一个安装文件里,安装时系统会自动匹配设备情况拉取需要的子包。你查询到的IsBundle=True的包就属于这个类型。Resource:资源包,专门存放语言翻译文件、高DPI适配素材、区域专属功能内容等非核心程序资源,系统会按需加载对应资源,不会占用运行时内存。你查到的IsResourcePackage=True的包就属于这个类型,一个应用通常会对应多个资源包,适配不同语言、不同分辨率配置。Framework:共享框架包,是多个Appx应用可以共用的运行时依赖,比如UWP基础运行库、WinUI框架组件都属于这类,不属于某一个应用独有,这类包的IsFramework属性为True。None:无明确类型的非标准包,一般是应用卸载残留、自定义部署的非标Appx包,正规渠道安装的正式应用几乎不会出现这个类型的包。
如果执行命令时不带这个参数,cmdlet默认会返回所有类型的包。
2. 闲置应用包删除的参数选择
不需要指定全部可选值,乱加参数反而容易误删系统依赖,按以下规则操作即可:
- 要彻底卸载某个目标应用时,指定
Main, Bundle, Resource三个类型即可,这三类都是该应用独有的包,全部删除就能清干净对应应用的所有文件,不会有残留。 - 绝对不要把
Framework类型纳入删除范围:哪怕包名带了你要删的应用关键词,这类包是多个应用共用的运行依赖,删除后会导致其他依赖该框架的应用直接崩溃无法启动。 None类型不需要默认纳入查询范围,只有当你明确确认某个None类型的包是已卸载应用留下的垃圾文件时,再手动删除即可。
以彻底卸载ZuneMusic(Groove音乐)为例,先枚举所有可安全删除的相关包的命令如下,确认返回结果无误后再接删除命令即可:
# 枚举ZuneMusic相关可安全删除的包 Get-AppxPackage -AllUsers -PackageTypeFilter Main, Bundle, Resource | Where-Object {$_.Name -like "*ZuneMusic*"} # 确认结果无误后执行卸载 Get-AppxPackage -AllUsers -PackageTypeFilter Main, Bundle, Resource | Where-Object {$_.Name -like "*ZuneMusic*"} | Remove-AppxPackage -AllUsers
内容的提问来源于stack exchange,提问作者LangsGalgEnRad
相关产品推荐
相关产品推荐

