如何处理从Invoke-RestMethod返回的数据

时间:2018-10-26 22:47:31

标签: powershell csv

我正在尝试获取一张来自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

感谢您的帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

为了将包含CSV数据的文本转换为可反映CSV数据行且其属性表示列值的自定义对象(类型为[pscustomobject]),请使用{ {3}} cmdlet。

然后将生成的对象与Select-Object之类的cmdlet一起使用-提取感兴趣的属性-和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

答案 1 :(得分:0)

如果您正在调用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