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

PowerShell数组转哈希表:点符号可用但方括号取值为空?

PowerShell 生成单个键值对哈希表

你现在的问题是代码生成了哈希表数组,而非单个哈希表,导致方括号取值失效。具体原因和解决方法如下:

问题根源

你的代码在ForEach-Object里每次循环都新建一个哈希表,最终输出的是包含3个哈希表的数组:

# 原代码输出的是哈希表数组
('1','2','3') | foreach {@{($_+'A') = $_}}

点符号能取到值是因为PowerShell的「成员访问枚举」特性——它会遍历数组里的每个哈希表,返回第一个匹配键的值;而方括号[]是直接对数组操作,数组没有1A这个索引,所以返回$null。

实现类似Python字典推导式的效果

要生成单个哈希表,有两种简洁写法:

方法1:初始化空哈希表,循环填充(最直观)

$hashTable = @{}
('1','2','3') | ForEach-Object {
    $hashTable[$_ + 'A'] = $_
}

验证取值:

PS > $hashTable.'1A'
1
PS > $hashTable['1A']
1

方法2:用ConvertFrom-StringData快速生成(PowerShell 5.0+)

先把键值对转成字符串格式,再转换为哈希表:

$hashTable = ('1','2','3') | ForEach-Object { "$($_+'A')=$_" } | ConvertFrom-StringData

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 05:07:32