iwr example rest powershell

example - Llamar a REST API desde PowerShell Script



powershell iwr (3)

¿Cómo puedo invocar una API basada en el resto de un script de PowerShell y procesar la respuesta de Json?


Creé esta función Get-Http para hacer solicitudes 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()

Tratar con el resultado final como xml es realmente fácil, sin embargo, si desea procesar JSON, probablemente necesite alguna biblioteca .Net como JSON.Net.


Usamos Powershell para consultar una API REST que solo trata con datos de estilo Json. Fue incómodo al principio, pero el código siguiente es todo lo que necesitamos para realizar la mayoría de las operaciones:

# 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)


Lo que desea es PowerShell 3 y sus Invoke-RestMethod , ConvertTo-Json y ConvertFrom-Json . Tu código terminará pareciéndose a:

$stuff = Invoke-RestMethod -Uri $url -Method Get;

y ni siquiera debería haber una necesidad de invocar ConvertFrom-Json en el resultado $stuff => ya está en un formato no de cadena utilizable.

Consulte http://technet.microsoft.com/en-us/Library/hh849971.aspx para obtener más detalles.