2011-01-04 19 views
16

Necesito integrar un script de powershell existente para actualizar su estado a través de un servicio web tranquilo que devuelve json. Soy un poco nuevo en powershell, pero pude encontrar el objeto System.Net.WebRequest haciendo algo como lo siguiente.¿Cómo puedo usar Powershell para acceder a un servicio web tranquilo?

$a = [System.Net.WebRequest]::Create("http://intranet/service/object/") 
$a.Method = "GET" 
$a.GetResponse() 

que devuelve una matriz de objetos JSON

[ {id:1}, {id:2}] // etc 

No estoy seguro de dónde ir desde aquí y cómo analizar esto en un tipo de datos nativo. Me gustaría poder publicar y eliminar también.

¿Alguna sugerencia? ¿Y hay alguna biblioteca json/resto o command-lets?

+0

http://duncan-cragg.org/blog/post/getting-data-rest-dialogues/ – reconbot

Respuesta

2

@Jaykul escribió un buen conjunto de funciones REST que forman parte de su guión dreamwiki MindTouch aquí: http://poshcode.org/691

28

Lo que queremos es PowerShell y su Invoke-RestMethod, ConvertTo JSON y cmdlets ConvertFrom-Json. Su código terminará pareciéndose a:

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

y no debería ser incluso una necesidad de invocar ConvertFrom JSON en el material resultante $ => ya está en un formato no sea una cadena utilizable.

Como por comentarios | PUT, sólo tiene que utilizar PowerShell hashes y arrays de estructurar los datos y luego llamar ConvertTo JSON en él antes de pasarlo a invocar-RestMethod o invocar-WebRequest:

Invoke-WebRequest - Uri $ url -ContentType application/json -Method Post -Body $ objectConvertedToJson

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

+1

Tiene toda la razón, sin embargo, PowerShell 3 sigue siendo bastante nuevo y no se implementa en el lugar donde trabajo. – reconbot

+0

brillante, gracias – Dave

Cuestiones relacionadas