PowerShell哈希表列表字符串插值出错,问题根源是什么?
PowerShell哈希表字符串插值错误原因及解决方法
你遇到的问题是PowerShell字符串插值的语法规则导致的:在双引号字符串里直接写$_.firstname时,PowerShell会把$_识别为整个哈希表对象,后面的.firstname会被当作普通文本处理,所以输出的是哈希表的类型名加上.firstname,而不是你想要的属性值。
要解决这个问题,需要用**子表达式$()**把属性访问的部分包裹起来,让PowerShell先执行括号内的属性取值操作,再把结果插入到字符串中。正确的写法如下:
$users | ForEach-Object {"$($_.firstname),$($_.surname)"}
你之前用字符串拼接的方式$_.firstname + "," + $_.surname能正常工作,是因为这种写法直接对属性进行取值后再拼接,不需要额外标记表达式;但字符串插值必须明确用$()来区分需要计算的表达式和普通文本。
内容的提问来源于stack exchange,提问作者MetallicPriest
相关产品推荐
相关产品推荐

