从变量列表中将行添加到CSV列中

时间:2019-02-07 13:12:29

标签: list powershell csv append

我已经为一个看似简单的事情而奋斗了一个多小时……但我做不到

说明:

我导入了一个看起来像这样的CSV,他为空:

DAYS | PC1 | PC2

我有一个变量“ $ Days ”,它看起来像这样:

PS C:\Users> $Days
12/02/2019
13/02/2019
14/02/2019
15/02/2019
16/02/2019

我只想将每一行添加到“天数”列中 ...

赞:

   DAYS    | PC1 | PC2
12/02/2019 |     |
13/02/2019 |     |
14/02/2019 |     |
15/02/2019 |     |
16/02/2019 |     |

我尝试类似:

Foreach ($row in $Days){
    $CSV.Days = $row
}

但是他告诉我找不到属性“ Days”。

我也尝试这样的事情:

$CSV | Select-Object @{Name='Days';Expression={$forearch ($row in $Days){$row}}},*

但是再没有结果,我不知道我在做什么错...

预先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的方法存在的问题是文件为空,因此不会为$ CSV生成任何属性

一个简单的解决方案是通过迭代$ Days并构建一个[PSCustomObject]

来生成$ CSV
$Days = @'
12/02/2019
13/02/2019
14/02/2019
15/02/2019
16/02/2019
'@ -split '\r?\n'

$CSV = $Days | ForEach-Object{
    [PSCustomObject]@{
        DAYS = $_
        PC1  = $NULL
        PC2  = $NULL
    }
}

$CSV
$CSV | Export-Csv .\YouNameIt.csv -NoTypeInformation

答案 1 :(得分:1)

或者,简称:

$CSV-out = $csv | ForEach-Object{[PSCustomObject]@{DAYS = $_}}|Select days, PC1, PC2

$ csv是值列表。类似于

$csv = @("12/02/2019","13/02/2019","14/02/2019","15/02/2019","16/02/2019")

如果再执行$ CSV | FT

    DAYS       PC1 PC2
    ----       --- ---
12/02/2019         
13/02/2019
14/02/2019
15/02/2019
16/02/2019

您不必仅添加一个自定义对象即可添加字段。您可以

  

选择

,它也会为您添加它们。