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

如何从PowerShell的$skus变量哈希表中提取所需数据?

提取Azure VM SKU Capabilities内部数据的方法

方法1:用计算属性提取指定字段

如果只需要特定的Capabilities(比如vCPUs、MaxResourceVolumeMB),可以在Select-Object中定义计算属性,通过匹配name字段定位目标哈希表并取出value:

$skus | Select-Object name,
    @{Name='vCPUs'; Expression={ ($_.capabilities | Where-Object name -eq 'vCPUs').value } },
    @{Name='MaxResourceVolumeMB'; Expression={ ($_.capabilities | Where-Object name -eq 'MaxResourceVolumeMB').value } },
    @{Name='OSVhdSizeMB'; Expression={ ($_.capabilities | Where-Object name -eq 'OSVhdSizeMB').value } }

方法2:展开所有Capabilities为对象属性

要把所有Capabilities都转化为对象的直接属性,可以通过遍历合并键值对实现:

$skus | ForEach-Object {
    # 将Capabilities数组转为键值对哈希表
    $capMap = $_.capabilities | Group-Object name -AsHashTable -AsString
    # 合并原SKU属性与Capabilities字段
    [PSCustomObject]@{
        name = $_.name
        resourceType = $_.resourceType
        family = $_.family
        size = $_.size
        # 按需添加Capabilities字段
        vCPUs = $capMap['vCPUs'].value
        MaxResourceVolumeMB = $capMap['MaxResourceVolumeMB'].value
        MemoryPreservingMaintenanceSupported = $capMap['MemoryPreservingMaintenanceSupported'].value
    }
}

更灵活的批量展开方式:

$skus | ForEach-Object {
    # 先保留基础属性
    $skuObj = $_ | Select-Object name, resourceType, family, size, tier
    # 逐个添加Capabilities作为对象属性
    $_.capabilities | ForEach-Object {
        $skuObj | Add-Member -MemberType NoteProperty -Name $_.name -Value $_.value -Force
    }
    $skuObj
}

方法3:定位单个SKU提取特定值

如果只需要针对某个SKU提取指定Capabilities值,直接通过过滤定位后取值:

# 提取Standard_M8-4ms的vCPUs数值
($skus | Where-Object name -eq 'Standard_M8-4ms').capabilities | Where-Object name -eq 'vCPUs' | Select-Object -ExpandProperty value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:18:13