我将如何为此使用通配符:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.1.16.0
我试过这个:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.*.*.*
我将如何为此使用通配符:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.1.16.0
我试过这个:
dism /online /remove-package /PackageName:Package_for_KB2952664~31bf3856ad364e35~amd64~~6.*.*.*
您不能在/PackageName
参数中使用通配符。您可以检索包的完整列表,在结果集中搜索所需的包,然后对每个结果运行删除命令。
首先,获取所有包:
$packages = dism /online /Get-Packages
接下来,使用正则表达式仅查找您关心的包:
$matched_packages = $packages | Select-String "Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$"
在上述命令Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$
中,如果需要,可以将正则表达式更改为更合适的正则表达式进行搜索。
接下来,过滤到匹配项中的值,以便更容易迭代:
$matched_values = $matched_packages | ForEach-Object { $_.Matches[0].Value }
最后,remove-package
在每场比赛上运行命令:
$matched_values | % {dism /online /remove-package /PackageName:$_}
如果您愿意,可以将其设为单线:
dism /online /Get-Packages | Select-String "Package_for_KB2952664~31bf3856ad364e35~amd64~~.*$" | ForEach-Object { $_.Matches[0].Value } | % {dism /online /remove-package /PackageName:$_}
构建这些命令可能有更简单的方法(我的 PowerShell 有点生疏),但上面的示例将为remove-package
正则表达式中指定的每个已安装版本的包执行命令。