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

兼容Chocolatey 1.x和2.x版本的已安装包验证通用命令

兼容多版本Chocolatey的包安装检测方案

核心思路

先获取目标机器上的Chocolatey版本,根据版本差异选择对应的查询命令,避免因参数变更导致的报错。

PowerShell实现代码

# 定义要检测的包名
$packageName = "procmon"

# 获取Chocolatey版本号并转换为可比较的版本类型
$chocoVersion = [version](choco --version)

# 根据版本选择适配的查询命令
if ($chocoVersion -lt [version]"2.0.0") {
    # 1.x版本需用--lo参数指定查询本地已安装包
    $null = choco list --lo -e $packageName
} else {
    # 2.0+版本默认查询本地,仅用-e做精确匹配
    $null = choco list -e $packageName
}

# 通过命令执行结果判断包状态
if ($LASTEXITCODE -eq 0) {
    Write-Host "包 $packageName 已安装"
} else {
    Write-Host "包 $packageName 未安装"
}

代码说明

  • choco --version直接获取版本号,转成[version]类型方便做版本大小比较
  • 1.x版本必须加--lo才能定位到本地已安装包,2.0+版本默认查询本地,-e参数用于精确匹配包名,避免模糊匹配带来的干扰
  • Chocolatey查询到目标包时返回退出码0,未找到时返回1(非报错场景),通过$LASTEXITCODE即可判断安装状态

批量检测优化(可选)

如果需要同时检测多个包,可将包名放入数组循环处理:

$packages = @("procmon", "notepadplusplus", "7zip")
$chocoVersion = [version](choco --version)

foreach ($pkg in $packages) {
    if ($chocoVersion -lt [version]"2.0.0") {
        $null = choco list --lo -e $pkg
    } else {
        $null = choco list -e $pkg
    }
    
    Write-Host "$pkg : $(if ($LASTEXITCODE -eq 0) {'已安装'} else {'未安装'})"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:22:06