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

如何在PowerShell中提取并格式化JSON中的软件名称与版本

PowerShell 实现方案

假设你的JSON结构类似这样(示例):

{
  "provisioners": [
    {
      "scripts": [
        "packer install --softwareName test-package --Version 1.0.0",
        "packer install --softwareName other-package --Version 2.3.4",
        "packer install --softwareName test-package --Version 1.1.0"
      ]
    }
  ]
}

以下是完整的实现代码:

# 读取并解析JSON文件
$jsonObj = Get-Content -Path "path/to/your/file.json" | ConvertFrom-Json

# 提取所有包含test-package的脚本命令,再解析出softwareName和Version
$results = $jsonObj.provisioners.scripts | Where-Object { $_ -match "test-package" } | ForEach-Object {
    # 用正则匹配命令行中的参数值
    if ($_ -match '--softwareName (\S+) --Version (\S+)') {
        [PSCustomObject]@{
            SoftwareName = $matches[1]
            Version      = $matches[2]
        }
    }
}

# 输出格式化表格
$results | Format-Table -AutoSize

关键说明

  • 正则匹配:--softwareName (\S+) --Version (\S+) 用于精准匹配命令行中的两个参数,(\S+) 捕获非空格的参数值作为分组,通过$matches变量提取对应的值。
  • 自定义对象:通过[PSCustomObject]构建结构化数据,方便后续格式化输出。
  • 筛选逻辑:Where-Object { $_ -match "test-package" } 快速过滤出目标命令行条目。

如果你的命令行参数顺序可能变化,可以调整正则为更灵活的形式,比如分别匹配两个参数:

if ($_ -match '--softwareName (\S+)' -and $_ -match '--Version (\S+)') {
    [PSCustomObject]@{
        SoftwareName = $matches[1]
        Version      = $matches[2]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:35:24