Powershell - 操作 CSV 列

问题描述 投票:0回答:1

我正在尝试操作 csv 文件列,但无法让它找到列数据。

我的 CSV 文件如下所示:

"From","To","Meter Number","Meter Name","Volume","Energy","1","2","3","4","5","6","7"
1,"32,360.0",10.601100,"343,051.6","73,553.0",10.462900,"769,577.7",0.0 ,10.470900,0.0,,,
2,"32,230.0",10.604000,"341,766.9","74,824.0",10.471300,"783,504.6",0.0 ,10.468100,0.0,,,
...
30,"17,769.0",10.440000,"185,508.4","63,591.0",10.452500,"664,684.9",0.0 ,10.445900,0.0,,,
31,"26,138.0",10.451000,"273,168.2","79,722.0",10.458300,"833,756.6",0.0 ,10.451400,0.0,,,

第一列显示月份中的某一天,我想将其转换为完整的日期时间字段。

我的代码是这样的:

 Import-Csv $RH | ForEach-Object {
        write-host $RH.'From'
            $DateTime = (date).AddMonths(-1).Month.ToString() + '/' + $RH.'From'.ToString() + '/' +  (date).AddMonths(-1).Year.ToString() + ' 09:00:00'
            
#            Write-Host $DateTime

            }

第一个写入主机生成一个空白列(应为“1”),并且 $DateTime 变量失败并出现错误:

You cannot call a method on a null-valued expression.

我做错了什么?

powershell csv
1个回答
0
投票

您的

Import-CSV
不太正确,因此,您的
ForEach-Object
也不太正确。

假设,arguendo,您的 CSV 文件位于文件

READINGS.CSV
中。

如果你想通过管道处理它,你可以使用

Import-CSV "READINGS.CSV" | ForEach-Object {
    Do-Something $_.From
    Do-SomethingElse $_."Meter Name"
...etc.
...etc.
}

伪变量

$_
表示“当前传入管道的对象”。

如果您想将 CSV 保存到数组中,然后处理该数组,您可以使用

$MyArray = Import-CSV "READINGS.CSV"
Do-SomethingWithArray -Array $MyArray
...etc.
...etc.
$MyArray | ForEach-Object {
   Do-Something -From $_.From -To $_.To -Energy $_.Energy -One $_.1
   ...etc.
   ...etc.
}
© www.soinside.com 2019 - 2024. All rights reserved.