json - body - invoke-webrequest headers
¿Cómo puedo usar Powershell para acceder a un servicio web reparador? (3)
@Jaykul escribió un buen conjunto de funciones REST que forman parte de su script Mindwuch Dreamwiki aquí: http://poshcode.org/691
Necesito integrar un script de powershell existente para actualizar su estado a través de un servicio web que devuelve json. Soy un poco nuevo en PowerShell pero pude encontrar el objeto System.Net.WebRequest haciendo algo como lo siguiente.
$a = [System.Net.WebRequest]::Create("http://intranet/service/object/")
$a.Method = "GET"
$a.GetResponse()
que devuelve una matriz json de objetos
[ {id:1}, {id:2}] // etc
No estoy seguro de a dónde ir desde aquí y cómo analizar esto en un tipo de datos nativo. Me gustaría poder publicar y borrar también.
Cualquier punteros? ¿Y hay alguna biblioteca json / rest o command-let?
Lo que desea es PowerShell 3 y sus cmdlets Invoke-RestMethod , ConvertTo-Json y ConvertFrom-Json . Tu código terminará luciendo como:
$ stuff = invoke-RestMethod -Uri $ url -Method Get;
y ni siquiera debería ser necesario invocar ConvertFrom-Json en el $ stuff => resultante, ya está en un formato no de cadena utilizable.
En cuanto a POSTs | PUTs, simplemente use los hashes y matrices de PowerShell para estructurar sus datos y luego llame a ConvertTo-Json antes de pasarlos a invoke-RestMethod o invoke-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.
Podría usar DataContractJsonSerializer , que es parte de la biblioteca estándar .Net.