【问题标题】:Append a row to a CSV from object arrays从对象数组向 CSV 追加一行
【发布时间】:2020-01-17 06:53:57
【问题描述】:

我正在尝试创建一个脚本,每周从 API 检索数据并将值附加到 CSV 文件中的新行。如何将所有值附加到 CSV 文件中的新行。

第 1 部分创建一个包含两个数组的对象 (1) 列名 (2) 稍后将在脚本中运行的 API 查询

$QUERY = @()

$QUERY += New-Object -TypeName psobject -Property @{ColumnName="HOME"; Value='API QUERY TO RETRIEVE A VALUE'}
$QUERY += New-Object -TypeName psobject -Property @{ColumnName="ADMIN"; Value='API QUERY TO RETRIEVE A VALUE'}
$QUERY += New-Object -TypeName psobject -Property @{ColumnName="CUSTOM"; Value='API QUERY TO RETRIEVE A VALUE'}
#... There will be approx 30 more lines similar to the above

第二部分运行 API 查询并检索一个值。

foreach ( $_ in $QUERY )
    {
        $_.Query= Invoke-RestMethod -Uri $url -Method POST -Headers $headers -ContentType $contentType -Body $_.Query | select -expand results
    }

如何将所有 $QUERY 数组附加到 CSV 文件的新行中。我希望根据 $QUERY.ColumnName 将 $Query.Value 放置在适当的位置,以防止将错误的数字放置在错误的列中。

这是我的 CSV 示例

HOME,ADMIN,CUSTOM;      #ColumnName
12345,67891,76543;      #Existing Values e.g Week 1
34556;35453,86567;      #Existing Values e.g Week 2
25345,75391,86243;      #I want to append a new row

我已经玩了一段时间了,但运气不佳!任何指导将不胜感激!谢谢:)

【问题讨论】:

  • Invoke-RestMethod 的输出是什么?我想知道如何检索 HOME、ADMIN 和 CUSTOM。
  • 它的值类似于 CSV 中的值,例如 HOME = 12345, ADMIN = 67891, CUSTOM = 76543。

标签: arrays powershell csv append


【解决方案1】:

在处理 CSV 文件时,PowerShell 将数据行的字段映射到自定义对象的属性,反之亦然。要将新行附加到给定的 CSV,您需要创建一个自定义对象,其属性与 CSV 的列名匹配,然后将其附加到 CSV。

$queryA = 'API query A'
$queryB = 'API query B'
$queryC = 'API query C'

New-Object PSObject -Property @{
    'HOME'   = Invoke-RestMethod ... -Body $queryA
    'ADMIN'  = Invoke-RestMethod ... -Body $queryB
    'CUSTOM' = Invoke-RestMethod ... -Body $queryC
} | Export-Csv 'C:\path\to\your.csv' -NoType -Append

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2012-06-09
    相关资源
    最近更新 更多