PowerShell导入CSV后如何去除@{name=xyz}格式仅保留名称值?
问题:PowerShell导入CSV后路径拼接显示异常
原脚本代码:
$csv = Import-Csv -Path "C:\test\CLEAN-UP.csv" -Delimiter ";" Foreach ($item In $csv) { Write-Output $item $path = "C:\Users\$item\Downloads" Write-Output $path }
执行后生成的路径显示为:C:\Users@{name =xyz}\Downloads
CSV文件结构:
| name |
|---|
| xyz |
| zyx |
解决方法
需要访问$item对象的name属性,而非直接使用对象本身。修改后的脚本如下:
$csv = Import-Csv -Path "C:\test\CLEAN-UP.csv" -Delimiter ";" Foreach ($item In $csv) { Write-Output $item.name $path = "C:\Users\$($item.name)\Downloads" Write-Output $path }
说明
Import-Csv导入CSV后,每一行会被转换为自定义对象,列名对应对象的属性。直接输出$item时,PowerShell会以@{属性名=值}格式展示对象。- 在字符串中引用对象属性时,必须用
$()包裹属性访问表达式,确保PowerShell正确解析属性值,而非把整个对象转为字符串。
内容的提问来源于stack exchange,提问作者user374982316419362491
相关产品推荐
相关产品推荐

