Как извлечь вывод Invoke-RestMethod в различные переменные - PullRequest
0 голосов
/ 05 мая 2019

Немного о нубе Пауэршелла здесь ..

Я работаю над Microsoft API для Windows Defender ATP. Мне нужно понять, как извлечь конкретные значения из пользовательского объекта 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 = настольных h2134uc; firstSeen = 4/30/19 22:03:40; lastSeen = 5/3/19 4:15:17; osPlatform = Windows 10; OSVersion ...

У меня вопрос - как мне извлечь значения отдельных полей для id, computerDnsName и т. Д.

Спасибо!

1 Ответ

0 голосов
/ 05 мая 2019
$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 или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...