windows - 如何将Invoke-RestMethod的输出提取到不同的变量中

标签 windows rest powershell windows-defender

有点Powershell的菜鸟在这里..

我正在研究Microsoft的Windows Defender ATP的API。我需要了解如何从自定义Powershell对象提取特定值,该对象作为Invoke-RestMethod的输出返回。

$webResponse = Invoke-RestMethod  -Method Get -Uri $url -Headers $headers 
Write-Output $webResponse

这将产生以下结果:

@odata.context value -------------- ----- https://api.securitycenter.windows.com/api/$metadata#Machines {@{id=f7749cafd089c66e53g21332ba0b426f6f88c953; computerDnsName=desktop-h2134uc; firstSeen=4/30/19 10:03:40 PM; lastSeen=5/3/19 4:15:17 AM; osPlatform=Windows10; osVersion…



我的问题是-如何提取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或其他名称。

关于windows - 如何将Invoke-RestMethod的输出提取到不同的变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55988835/

相关文章:

php - 开发一致库的最佳实践是什么?

spring - 我应该在哪里包装我的 REST 响应、 Controller 或服务?

.net - 如何在Powershell中将流保存到磁盘?

powershell - 如何从PowerShell运行* .exe文件

java - Sun JVM 如何将 Java 线程映射到 Windows 线程?

NASM 程序集中的 Windows API 蜂鸣功能

c++ - 如何验证用户登录到域或本地

windows - Amazon EC2 - 无法访问 Windows 2008R2 实例

rest - 如何避免自定义过滤器在 spring-security 中运行不安全的 url

powershell - 如何在 powerShell ISE 中标记 block /列?