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

PowerShell哈希表导出CSV遇问题:如何批量引用键值而非逐个调用?

解决哈希表批量导出CSV的问题

我完全懂你在把哈希表导出成CSV时的头疼——直接导出哈希表确实会因为它的结构导致输出混乱,手动调用每个.item属性又太繁琐。其实用PowerShell的枚举器就能轻松解决这个批量处理键值的问题,不用逐个指定每个哈希表项。

核心解决方案:用GetEnumerator()遍历哈希表

哈希表本身没有直接可批量调用的Name/Value属性,但通过GetEnumerator()方法,我们可以把哈希表转换成包含Key和Value属性的键值对集合,这样就能批量处理所有项了。

完整示例代码

# 你的SKU哈希表
$Sku = @{ 
    "AAD_BASIC" = "Azure Active Directory Basic"; 
    "RMS_S_ENTERPRISE" = "Azure Active Directory Rights Management"; 
    "AAD_PREMIUM" = "Azure Active Directory Premium P1"; 
    "AAD_PREMIUM_P2" = "Azure Active Directory Premium P2"; 
    "MFA_PREMIUM" = "Azure Multi-Factor Authentication"; 
    "RIGHTSMANAGEMENT" = "Azure Information Protection Plan 1"; 
    "O365_BUSINESS_ESSENTIALS" = "Office 365 Business Essentials"; 
    "O365_BUSINESS_PREMIUM" = "Office 365 Business Premium"; 
    "ADALLOM_O365" = "Office 365 Cloud App Security"; 
    "ADALLOM_S_DISCOVERY" = "Unknown" 
}

# 方法1:转换成PSCustomObject后导出
$Sku.GetEnumerator() | ForEach-Object {
    [PSCustomObject]@{
        SkuCode = $_.Key  # 哈希表的键
        SkuName = $_.Value # 哈希表对应的值
    }
} | Export-Csv -Path "C:\temp\SkuList.csv" -NoTypeInformation -Encoding UTF8

# 方法2:用Select-Object简化写法
$Sku.GetEnumerator() | 
    Select-Object @{Name='SkuCode'; Expression={$_.Key}}, 
                  @{Name='SkuName'; Expression={$_.Value}} |
    Export-Csv -Path "C:\temp\SkuList_Short.csv" -NoTypeInformation -Encoding UTF8

为什么这个方法有效?

哈希表的GetEnumerator()会返回一个包含所有键值对的集合,每个集合项都自带Key(哈希表的键名)和Value(对应的值)属性。通过遍历这个集合,我们可以批量把每个键值对转换成结构化的对象,这样导出CSV时就会得到整洁的两列数据,完全不需要手动调用每个.item属性。

之前你尝试的.name和.value无效,是因为哈希表本身没有这些属性——只有通过枚举器拿到单个键值对对象后,才能访问对应的Key和Value。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:11:38