如何从PowerShell脚本调用基于rest的API并处理Json答案?
答案 0 :(得分:45)
您需要的是PowerShell 3及其Invoke-RestMethod
,ConvertTo-Json
和ConvertFrom-Json
cmdlet。您的代码最终将如下所示:
$stuff = Invoke-RestMethod -Uri $url -Method Get;
甚至不需要在生成的ConvertFrom-Json
=>上调用$stuff
它已经是一个可用的非字符串格式。
有关详细信息,请参阅http://technet.microsoft.com/en-us/Library/hh849971.aspx。
答案 1 :(得分:22)
我创建了这个Get-Http函数来发出HTTP请求
param([string]$url)
$req = [System.Net.WebRequest]::Create($url)
$req.Method ="GET"
$req.ContentLength = 0
$resp = $req.GetResponse()
$reader = new-object System.IO.StreamReader($resp.GetResponseStream())
$reader.ReadToEnd()
处理最终结果因为xml非常简单,但是,如果你想处理JSON,你可能需要一些.Net库,比如JSON.Net。
答案 2 :(得分:5)
我们使用Powershell查询仅处理Json样式数据的REST API。起初它很尴尬,但下面的代码是我们执行大多数操作所需的全部内容:
# Authentication
$webclient = New-Object System.Net.WebClient
$creds = New-Object System.Net.NetworkCredential("MyUsername","MyPassword");
$webclient.Credentials = $creds
# Data prep
$data = @{Name='Test';} | ConvertTo-Json
# GET
$webClient.DownloadString($url) | ConvertFrom-Json
# POST
$webClient.UploadString($url,'POST',$data)
# PUT
$webClient.UploadString($url,'PUT',$data)