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

PowerShell解析CycloneDX BOM XML时处理许可、筛选链接及关联名称的问题

PowerShell解析CycloneDX 1.2 BOM XML解决方案

1. 无许可信息组件字段填充

直接使用以下判断逻辑替换你原有许可处理代码即可,兼容CycloneDX 1.2标准的许可节点结构:

# 遍历组件时提取许可信息
$licenseText = if ($null -ne $component.licenses -and $null -ne $component.licenses.license) {
    # 支持多许可场景,用分号拼接
    ($component.licenses.license | ForEach-Object { $_.id ?? $_.name }) -join ';'
} else {
    "No License"
}

2. 提取type为website的外部引用链接

通过属性过滤即可精准匹配目标链接,避免输出所有引用:

$officialUrl = ($component.externalReferences.reference | Where-Object { $_.type -eq 'website' }).url | Select-Object -First 1
# 无匹配链接时赋值为空字符串避免后续逻辑报错
$officialUrl = $officialUrl ?? ""

3. 组件名称关联可跳转链接

不需要使用New-Item Junction,根据你最终输出的文件格式拼接对应链接规则即可:

  • 若输出为Markdown格式,使用如下拼接逻辑:
    $componentDisplay = if ($officialUrl) { "[$($component.name)]($officialUrl)" } else { $component.name }
  • 若输出为Excel可识别的格式,使用如下拼接逻辑:
    $componentDisplay = if ($officialUrl) { "=HYPERLINK("$officialUrl", "$($component.name)")" } else { $component.name }
  • 若输出为HTML格式,使用如下拼接逻辑:
    $componentDisplay = if ($officialUrl) { "<a href="$officialUrl">$($component.name)</a>" } else { $component.name }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 00:09:01