我正在尝试获取一张来自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
感谢您的帮助。谢谢!
答案 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