如何在PowerShell中从CSV文件提取值并设置为变量
PowerShell中提取CSV导入后的数据方法
1. 确认CSV导入结果
先确保你已经正确完成CSV导入(替换成你的实际文件路径):
$inputs = Import-Csv -Path "C:\your\file\path\data.csv"
导入后,$inputs是一个对象数组——数组里的每个元素对应CSV中的一行,CSV的列名就是每个对象的属性。
2. 访问单行数据
通过数组索引定位行(索引从0开始),再通过属性名提取对应列的值:
# 直接提取第一行的Site值 $inputs[0].Site # 输出:Town1 # 提取第一行的起始里程(注意列名含空格,需用单引号包裹) $inputs[0].'Mileage Start' # 输出:21509 # 先把整行存到变量,再访问属性 $firstTrip = $inputs[0] Write-Host "第一趟行程:日期$($firstTrip.Date),地点$($firstTrip.Site)"
3. 遍历所有行数据
用foreach循环逐个处理每一行,适合批量操作:
foreach ($trip in $inputs) { # 输出每行核心信息 Write-Host "地点:$($trip.Site) | 起始里程:$($trip.'Mileage Start') | 结束里程:$($trip.'Mileage Stop')" # 处理空值(比如第二行的Date为空) if ([string]::IsNullOrEmpty($trip.Date)) { Write-Host "⚠️ 这一行日期为空" } }
运行后会输出:
地点:Town1 | 起始里程:21509 | 结束里程:21564 地点:Town2 | 起始里程:21564 | 结束里程:21583 ⚠️ 这一行日期为空
4. 提取整列的所有值
直接通过属性名获取整列数据,结果是一个数组:
# 获取所有地点 $allSites = $inputs.Site # 结果:@('Town1', 'Town2') # 获取所有温度值 $allTemps = $inputs.Temp # 结果:@('71', '55')
5. 将每行字段存为单独变量
如果需要把每行的每个字段都存到独立变量,可按行索引逐一提取:
# 第一行数据 $date1 = $inputs[0].Date $site1 = $inputs[0].Site $mileageStart1 = $inputs[0].'Mileage Start' $mileageStop1 = $inputs[0].'Mileage Stop' $temp1 = $inputs[0].Temp # 第二行数据 $date2 = $inputs[1].Date $site2 = $inputs[1].Site $mileageStart2 = $inputs[1].'Mileage Start' $mileageStop2 = $inputs[1].'Mileage Stop' $temp2 = $inputs[1].Temp
内容的提问来源于stack exchange,提问作者wg041403
相关产品推荐
相关产品推荐

