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

PowerShell如何不通过名称、按位置或ID引用CSV列或属性

解决方案

方法1:直接通过属性索引访问(原生支持,无需额外预处理)

PowerShell的自定义对象都自带PSObject.Properties集合,按CSV列的导入顺序排序,索引从0开始计数,直接通过索引即可读取/修改对应列的值,无需输入完整属性名。
示例代码(对应你原需求修改First Name列的值):

$data = Import-CSV .\data.csv | ForEach-Object {
    # 索引1对应第二列 First Name
    if ($_.PSObject.Properties[1].Value -eq "Bob") {
        $_.PSObject.Properties[1].Value = "Robert"
    }
    $_
}

方法2:预存表头数组复用(代码更简洁)

如果嫌写PSObject.Properties太长,可以提前提取一次表头数组,后续直接用下标取对应表头名动态访问属性:

# 提取CSV表头,顺序与列顺序完全一致
$colHeaders = (Get-Content .\data.csv -First 1).Split(" ", [StringSplitOptions]::RemoveEmptyEntries)
$data = Import-CSV .\data.csv | ForEach-Object {
    if ($_.$($colHeaders[1]) -eq "Bob") {
        $_.$($colHeaders[1]) = "Robert"
    }
    $_
}

以上两种都是PowerShell原生支持的实现,不需要提前创建大量变量,也不需要修改导入表头后再还原,非常适合临时快速处理数据的场景。需要注意列索引从0开始计数,使用前确认好目标列的位置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:45:00