You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅列出通过winget命令安装的软件包用于新电脑迁移?

仅列出通过Winget安装的软件包并迁移到新电脑

Winget本身没有原生的list子命令参数直接过滤仅由它安装的包,但可以通过以下两种方法实现需求:

方法1:通过注册表查询筛选

Winget会在注册表中为自己安装的包添加InstalledByWinget标记,可通过PowerShell读取这些记录:

步骤1:导出Winget安装的包列表

建议以管理员身份运行PowerShell,执行以下命令:

# 扫描所有卸载注册表项,筛选Winget安装的包
$wingetPackages = Get-ItemProperty -Path @(
    'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
    'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*',
    'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
) | Where-Object { $_.InstalledByWinget -eq 1 } | Select-Object DisplayName, DisplayVersion, @{Name='PackageId'; Expression={$_.PSChildName}}

# 将结果导出为JSON文件,便于迁移
$wingetPackages | ConvertTo-Json -Depth 10 | Out-File -FilePath "winget-packages.json" -Encoding UTF8

步骤2:在新电脑上批量安装

将导出的winget-packages.json复制到新电脑,运行以下PowerShell命令:

$packages = Get-Content -FilePath "winget-packages.json" | ConvertFrom-Json
foreach ($pkg in $packages) {
    # 通过PackageID精确安装,避免名称或版本冲突
    winget install --id $pkg.PackageId --exact --silent
}

方法2:利用Winget导出/导入功能筛选

Winget的export命令默认导出所有已安装包,可手动筛选出仅Winget安装的条目:

步骤1:导出所有包并筛选

  1. 先导出全部已安装包:
winget export -o all-packages.json
  1. 用PowerShell筛选出Winget安装的包:
$allPackages = Get-Content -FilePath "all-packages.json" | ConvertFrom-Json
$wingetOnly = $allPackages.Packages | Where-Object { $_.InstalledByWinget -eq $true }
# 重构符合Winget导入格式的JSON结构
$exportObject = [PSCustomObject]@{
    Sources = $allPackages.Sources
    Packages = $wingetOnly
}
$exportObject | ConvertTo-Json -Depth 10 | Out-File -FilePath "winget-only-packages.json" -Encoding UTF8

步骤2:在新电脑上导入安装

winget import -i winget-only-packages.json

注意事项

  • 早期版本Winget安装的部分软件可能没有InstalledByWinget标记,会导致筛选遗漏;
  • 安装部分软件需要管理员权限,建议以管理员身份运行终端;
  • --silent参数用于静默安装,可根据需求移除,手动确认安装选项。

内容的提问来源于stack exchange,提问作者pooya13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:35:21