PowerShell报错:PackageManagement无法处理超63个包的问题求助
解决Get-Package的PackageManagement包数量限制问题
当使用Get-Package一次性查询多个包(含通配符的匹配结果总数量超过63)时,会触发PackageManagement模块的内置上限,报错提示get-package : PackageManagement cannot handle '76' packages.The limit is 63。目前该限制没有公开的配置项可以修改,只能通过拆分查询的方式规避,以下是具体解决方向:
方案1:分批次执行查询
将原有的包列表拆分为多个小批次,分别执行Get-Package后追加到结果文件,确保每批次的匹配结果数量不超过63:
# 第一批次查询 Get-Package 'Microsoft Edge','Mitel Connect', '*7-Zip*','*Cylance*','*Office Profession*','*Google*' | Select-Object Name,Version >> "c:\Temp\Programs.txt" # 第二批次查询 Get-Package 'Cisco AnyConnect Secure Mobility Client','Microsoft Teams','Multipresenter','*Foxit*','*Java*' | Select-Object Name,Version >> "c:\Temp\Programs.txt" # 第三批次查询 Get-Package 'Local Administrator Password Solution','Autodesk AutoCAD LT','SOLIDWORKS 2021','NEWTON' | Select-Object Name,Version >> "c:\Temp\Programs.txt"
方案2:遍历单个包名查询
对每个要查询的包名(含通配符)单独执行Get-Package,通过循环逐个处理,彻底避免多模式匹配后的数量累积:
$packageNames = @( 'Microsoft Edge','Mitel Connect', '*7-Zip*','*Cylance*', '*Office Profession*','*Google*','Cisco AnyConnect Secure Mobility Client', 'Microsoft Teams','Multipresenter','*Foxit*','*Java*', 'Local Administrator Password Solution','Autodesk AutoCAD LT', 'SOLIDWORKS 2021','NEWTON' ) foreach ($name in $packageNames) { Get-Package $name | Select-Object Name,Version >> "c:\Temp\Programs.txt" }
方案3:去重后输出(可选)
如果不同查询模式可能匹配到同一个包,导致结果文件出现重复条目,可以先收集所有结果再去重:
$packageNames = @( 'Microsoft Edge','Mitel Connect', '*7-Zip*','*Cylance*', '*Office Profession*','*Google*','Cisco AnyConnect Secure Mobility Client', 'Microsoft Teams','Multipresenter','*Foxit*','*Java*', 'Local Administrator Password Solution','Autodesk AutoCAD LT', 'SOLIDWORKS 2021','NEWTON' ) $results = @() foreach ($name in $packageNames) { $results += Get-Package $name | Select-Object Name,Version } # 按名称去重后写入文件 $results | Sort-Object Name -Unique >> "c:\Temp\Programs.txt"
内容的提问来源于stack exchange,提问作者BatchKing70
相关产品推荐
相关产品推荐

