PowerShell中如何静态初始化哈希表嵌套结构?
PowerShell嵌套哈希表静态初始化错误修复
错误代码
$table = @{"a" = @{"x" = 1, "y" = 2, "z" = 3}, "b" = @{"x" = 3, "y" = 4, "z" = 6}}
错误信息
PS C:\Users\nkannapp> $table = @{"a"=@{"x" = 1, "y" = 2, "z" = 3}, "b"=@{"x" = 3, "y" = 4, "z" = 6}}
At line:1 char:16
- $table = @{"a"=@{"x" = 1, "y" = 2, "z" = 3}, "b"=@{"x" = 3, "y" = 4, ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~The assignment expression is not valid. The input to an assignment operator must be an object that is able to accept
assignments, such as a variable or a property.
At line:1 char:46
- $table = @{"a"=@{"x" = 1, "y" = 2, "z" = 3}, "b"=@{"x" = 3, "y" = 4, ...
~~~The assignment expression is not valid. The input to an assignment operator must be an object that is able to accept
assignments, such as a variable or a property.
修复后的正确代码
紧凑写法
$table = @{"a" = @{"x" = 1; "y" = 2; "z" = 3}; "b" = @{"x" = 3; "y" = 4; "z" = 6}}
换行格式化(可读性更强)
$table = @{ "a" = @{ "x" = 1 "y" = 2 "z" = 3 } "b" = @{ "x" = 3 "y" = 4 "z" = 6 } }
错误原因
PowerShell初始化哈希表时,键值对之间必须用分号(;)分隔,逗号(,)是PowerShell的数组创建运算符。原代码中的逗号会被解析为将多个对象打包成数组,破坏了哈希表的结构定义,最终触发赋值表达式无效的报错。
内容的提问来源于stack exchange,提问作者Neelakantan K
相关产品推荐
相关产品推荐

