从PowerShell脚本调用REST API

如何从PowerShell脚本调用基于rest的API并处理Json答案?

你想要的是PowerShell 3和它的Invoke-RestMethodConvertTo-JsonConvertFrom-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)