【问题标题】:How to manipulate data returned from Invoke-RestMethod如何操作从 Invoke-RestMethod 返回的数据
【发布时间】:2018-10-26 22:47:30
【问题描述】:

我正在尝试获取从 invoke-restmethod 返回的数据表并将其插入数据库。我正在努力选择特定的数据列。

当我使用 Invoke-RestMethod 时,我会以以下格式返回数据。

Col1,Col2,Col3,Col4
数据,aaa,bbb,ccc
数据,ddd,eee,fff
数据,ggg,hhh,iii

但是我不能使用 Select 或 expandproperty 来只抓取特定的行。 IE下面的命令。

$response = Invoke-RestMethod -Uri $URL -Method Get -Headers $headers 
$response | Select col1, col2 | Sort-Object -property col2 -Descending

我也尝试过归档数据,但它看起来像是将所有数据作为一个字符串加入。

Col1,Col2,Col3,Col4data,aaa,bbb,cccdata,ddd,eee,fffdata,ggg,hhh,iii

感谢任何帮助。谢谢!

【问题讨论】:

  • 数据是否以 JSON 格式返回?您可以编辑您的问题以准确显示 Invoke-RestMethod 为您提供的格式吗?它应该返回 JSON。
  • 请允许我给你一个标准的建议给新手:如果一个答案解决了你的问题,请点击它旁边的大复选标记 (✓) 接受它,也可以选择给它投票(up - 投票需要 15 个或更多声望点)。如果您发现其他答案有帮助,请给他们投票。接受(您将获得 2 个声望点)和投票可以帮助未来的读者。请参阅this article 了解更多信息。如果您的问题尚未得到完全解答,请提供反馈或self-answer

标签: powershell csv


【解决方案1】:

为了将包含 CSV 数据的文本转换为自定义对象[pscustomobject] 类型)以反映 CSV 数据行并且其属性表示列值,使用ConvertFrom-Csv cmdlet。

然后可以将生成的对象与 cmdlet 一起使用,例如 Select-Object - 用于提取感兴趣的属性 - 和 Sort-Object

这是一个简化的例子:

# Simulate the outcome of your Invoke-RestMethod call with a here-string:
$response = @'
Col1,Col2,Col3,Col4
data,aaa,bbb,ccc
data,ddd,eee,fff
data,ggg,hhh,iii
'@

$response | ConvertFrom-Csv | Select-Object Col1, Col2 | Sort-Object Col2 -Descending

以上产生以下 3 个[pscustomobject] 实例,按其.Col2 属性值降序排列:

Col1 Col2
---- ----
data ggg
data ddd
data aaa

【讨论】:

    【解决方案2】:

    如果您正在调用 REST API 调用,则返回的数据可能是 JSON 格式。您可以按如下方式进行转换:

    $jsonResponse = Inovke-RestMethod -Uri $uri -Method Get -Headers $headers
    $newObject = $jsonResponse | ConvertFrom-Json
    

    -或

    $newObject = $Invoke-RestMethod -Uri $uri -Method Get -Headers $headers | ConvertFrom-Json
    

    这意味着$jsonResponse 是:

    {
        "FirstName" : "Tom",
        "LastName" : "Crooze"
    }
    

    转换为newObject 如下所示:

    FirstName      LastName
    ---------      --------
          Tom        Crooze
    

    【讨论】:

    • 虽然 JSON 作为响应格式很常见,但 REST API 并不局限于此,有些 API 会返回 text/csv 数据。
    猜你喜欢
    • 2021-07-19
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2015-02-04
    • 1970-01-01
    相关资源
    最近更新 更多