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

PowerShell 7处理JIRA Insight API缺失字段的哈希表赋值问题

解决JIRA Insight API动态缺失字段的PowerShell解析问题

核心思路

将每个资产对象的attributes集合转换为以objectTypeAttributeId为键的哈希表,通过键直接安全取值,缺失字段自动返回空字符串,避免静态赋值时的索引错误和字段缺失问题。

改进后的代码实现

# 定义objectTypeAttributeId与SQL表字段的映射关系,便于维护
$attributeMapping = @{
    '120' = 'Key'
    '121' = 'Name'
    '122' = 'Created'
    '123' = 'Updated'
    '124' = 'AssetTag'
    '125' = 'Status'
    '127' = 'SerialNumber'
    '128' = 'Description'
    '214' = 'Location'
    '215' = 'CostCenter'
    '443' = 'AssociatedPerson'
    '444' = 'AdminWorkgroup'
    '424' = 'Model'
}

$TradePhones = @()

foreach($item in $TradingPhones.objectEntries) {
    # 将当前资产的属性转换为键值对哈希表,便于快速查找
    $attrLookup = @{}
    foreach($attr in $item.attributes) {
        # 单值属性取第一个displayValue;多值可改为 -join ';' 合并
        $attrLookup[$attr.objectTypeAttributeId.ToString()] = $attr.objectAttributeValues.displayValue[0]
    }

    # 构建有序哈希表,按映射关系赋值,缺失字段返回空字符串
    $assetObject = [ordered]@{}
    foreach($attrId in $attributeMapping.Keys) {
        $fieldName = $attributeMapping[$attrId]
        # 空值合并运算符:存在则取对应值,否则返回空字符串
        $assetObject[$fieldName] = $attrLookup[$attrId] ?? ''
    }

    $TradePhones += [PSCustomObject]$assetObject
}

关键细节说明

  1. 属性映射表:集中管理objectTypeAttributeId和目标字段的对应关系,后续新增/修改字段只需调整此表,无需改动循环逻辑。
  2. 哈希表转换:把分散的attributes集合转为键值对,解决了静态索引依赖字段顺序的问题,查找效率更高。
  3. 安全取值:使用PowerShell 7支持的??空值合并运算符,确保缺失字段自动填充空字符串,避免赋值错误。
  4. 多值处理:如果属性存在多值(objectAttributeValues是数组),可将赋值逻辑改为$attr.objectAttributeValues.displayValue -join ';',把多值合并为单个字符串适配SQL表结构。

后续SQL插入

处理后的$TradePhones是标准的PSCustomObject集合,可直接使用Write-SqlTableData(需安装SqlServer模块)或ADO.NET方式插入SQL表:

# 示例:使用Write-SqlTableData插入SQL表
Write-SqlTableData -ServerInstance "YourSQLServer" -DatabaseName "YourDB" -SchemaName "dbo" -TableName "YourAssetTable" -InputData $TradePhones

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:40:30