从PowerShell脚本调用REST API
如何从PowerShell脚本调用基于rest的API并处理Json答案?
你想要的是PowerShell 3和它的Invoke-RestMethod
, ConvertTo-Json
和ConvertFrom-Json
cmdlet。 你的代码将最终看起来像:
$stuff = Invoke-RestMethod -Uri $url -Method Get;
甚至不需要调用ConvertFrom-Json
就可以得到$stuff
=>它已经是一个可用的非string格式。
有关详细信息,请参阅http://technet.microsoft.com/en-us/Library/hh849971.aspx 。
我创build了这个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)。
我们使用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)