Как я могу использовать Powershell для доступа к спокойному веб-сервису?
Мне нужно интегрировать существующую powershell script, чтобы обновить ее статус с помощью успокоительной веб-службы, которая возвращает json. Я немного новичок в powershell, но мне удалось найти объект System.Net.WebRequest, сделав что-то вроде следующего.
$a = [System.Net.WebRequest]::Create("http://intranet/service/object/")
$a.Method = "GET"
$a.GetResponse()
который возвращает массив json объектов
[ {id:1}, {id:2}] // etc
Я не уверен, куда идти отсюда и как разбирать это в родном типе данных. Я хотел бы иметь возможность отправлять и удалять.
Любые указатели? И есть ли какие-либо библиотеки json/rest или command-let?
Ответы
Ответ 1
Вы хотите PowerShell 3 и его командлеты Invoke-RestMethod, ConvertTo-Json и ConvertFrom-Json. Ваш код будет выглядеть следующим образом:
$stuff = invoke-RestMethod -Uri $url -Method Get;
и не должно быть необходимости также вызывать ConvertFrom-Json в полученном в результате $stuff = > в уже используемом нестрочном формате.
Что касается POSTs | PUT, просто используйте хеши PowerShell и массивы для структурирования ваших данных, а затем вызовите ConvertTo-Json на нем, прежде чем передавать его для вызова-RestMethod или invoke-WebRequest:
invoke-WebRequest -Uri $url -ContentType application/json -Method Post -Body $objectConvertedToJson
Подробнее см. http://technet.microsoft.com/en-us/Library/hh849971.aspx.
Ответ 2
Вы можете использовать DataContractJsonSerializer, который является частью стандартной библиотеки .Net.
Ответ 3
@Jaykul написал хороший набор функций RESTful, которые являются частью его мечты windm wiki script здесь: http://poshcode.org/691