windows - 如何将 Invoke-RestMethod 的输出提取到不同的变量中
问题描述
这里有点像Powershell noob ..
我正在为 Windows Defender ATP 开发 Microsoft 的 API。我需要了解如何从作为 Invoke-RestMethod 输出返回的自定义 powershell 对象中提取特定值。
$webResponse = Invoke-RestMethod -Method Get -Uri $url -Headers $headers
Write-Output $webResponse
这会产生以下结果:
@odata.context 值 -------------- ----- https://api.securitycenter.windows.com/api/ $metadata#Machines {@{id=f7749cafd089c66e53g21332ba0b426f6f88c953; computerDnsName=桌面-h2134uc;firstSeen=4/30/19 晚上 10:03:40;lastSeen=19 年 5 月 3 日凌晨 4 点 15 分 17 秒;操作系统平台=Windows10;操作系统版本...</p>
我的问题是 - 如何提取 id、computerDnsName 等的各个字段值。
谢谢!
解决方案
$response = Invoke-WebRequest -Uri www.google.at
$response | Get-Member
TypeName: Microsoft.PowerShell.Commands.HtmlWebResponseObject
Name MemberType Definition
---- ---------- ----------
...
Headers Property System.Collections.Generic.Dictionary[string,string] Headers {get;}
Images Property Microsoft.PowerShell.Commands.WebCmdletElementCollection Images {get;}
InputFields Property Microsoft.PowerShell.Commands.WebCmdletElementCollection InputFields {get;}
Links Property Microsoft.PowerShell.Commands.WebCmdletElementCollection Links {get;}
ParsedHtml Property mshtml.IHTMLDocument2 ParsedHtml {get;}
RawContent Property string RawContent {get;set;}
RawContentLength Property long RawContentLength {get;}
RawContentStream Property System.IO.MemoryStream RawContentStream {get;}
Scripts Property Microsoft.PowerShell.Commands.WebCmdletElementCollection Scripts {get;}
StatusCode Property int StatusCode {get;}
StatusDescription Property string StatusDescription {get;}
通过 Get-Member
您将知道该对象支持哪些属性。然后您可以在给定对象上调用这些属性:
$response.StatusCode
200
如果要选择多个属性,可以使用Select-Object
:
$response | select statuscode, statusdescription
StatusCode StatusDescription
---------- -----------------
200 OK
当然,您可以将结果存储Select-Object
在变量中。
更多或更少相同可以用于Invoke-RestMethod
:
Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/ | Get-Member
TypeName: System.Xml.XmlElement
Name MemberType Definition
---- ---------- ----------
...
comments Property System.Object[] comments {get;}
creator Property System.Xml.XmlElement creator {get;}
description Property System.Xml.XmlElement description {get;}
encoded Property System.Xml.XmlElement encoded {get;}
...
您可以选择/使用的属性取决于响应正文中返回的格式。在上面的示例中,您有一个 XML 正文,但它也可以是 JSON 或其他内容。
推荐阅读
- reactjs - 思考不同的例子?
- javascript - (总 html 新手)如何防止网页出现滚动条,而是调整网站大小以适应浏览器窗口?
- c++ - wxWidgets 中从 wxHTML 迁移到 wxWebView
- jquery - 具有在连续循环中自动分页的数据页面的数据表
- angular - Angular Autocomplete - 如何推迟对数据的 API 请求,直到用户关注该字段?
- pdf - XSL-FO 到 PDF 与 Ibex 如何压缩文件
- android - 如何在Android的tableview中左对齐文本
- postgresql - 重复“IN”子句值列表的最佳方法
- javascript - 我怎样才能使这段文字居中?完成这项特定任务似乎很简单,但它不会成功
- android - 我在 android studio 中遇到问题,在 kotlin 最新版本 1.5.30-M1 中使用导航组件