在Powershell中检索system.object基类型的String值

时间:2019-03-25 06:02:40

标签: powershell powershell-v5.0

我收到了http发帖请求的结果,并且将内容存储在一个可变参数中。

$response = Invoke-WebRequest -Uri "https://xxxxxx" -Method Post -Body $Body -Headers $header 
$Content =$response.Content

内容如下:

{"id":"246584121546545124545"}

现在我只想要id的值。我尝试使用选择对象和属性参数来获取ID的值。但是它不起作用,因为内容是字符串。看起来很简单,但是找不到找到该值的方法。

PS C:\Scripts> $Content.GetType()

IsPublic IsSerial Name                                     BaseType                                                                                                                           
-------- -------- ----                                     --------                                                                                                                           
True     True     String                                   System.Object  

2 个答案:

答案 0 :(得分:1)

尝试像这样从JSON解析到自定义PS对象,然后访问id属性:

> $x = ConvertFrom-Json -InputObject $Content
> $x.id

答案 1 :(得分:1)

您也可以使用Invoke-RestMethod

$response = Invoke-RestMethod -Uri "https://xxxxxx" -Method Post -Body $Body -Headers $header 
$response.id

Invoke-RestMethod

Microsoft Docs

  

Invoke-RestMethod cmdlet将HTTP和HTTPS请求发送到代表性状态传输(REST)Web服务,该服务返回结构丰富的数据。
  Windows PowerShell根据数据类型设置响应的格式。
  对于JavaScript对象表示法(JSON)或XML,Windows PowerShell将内容转换(或反序列化)为对象。