Call REST API from PowerShell Script
How can I call a rest base开发者_如何转开发d API from a PowerShell script and process the Json answer?
What you want is PowerShell 3 and its Invoke-RestMethod
, ConvertTo-Json
, and ConvertFrom-Json
cmdlets. Your code will end up looking like:
$stuff = Invoke-RestMethod -Uri $url -Method Get;
and there shouldn't even be a need to invoke ConvertFrom-Json
on the resulting $stuff
=> it's already in a usable non-string format.
See http://technet.microsoft.com/en-us/Library/hh849971.aspx for details.
I created this Get-Http function to make HTTP requests
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()
Dealing with the end result as xml is really easy, however, if you want to process JSON you probably will need some .Net library like JSON.Net.
We use Powershell to query a REST API that deals only with Json style data. It was awkward at first but the below code is all we need to perform most operations:
# 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)
精彩评论