Как я могу использовать Powershell для доступа к полноценному веб-сервису? - PullRequest
16 голосов
/ 04 января 2011

Мне нужно интегрировать существующий сценарий powershell, чтобы обновить его состояние с помощью успокоительного веб-сервиса, который возвращает 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 или команды let?

Ответы [ 3 ]

28 голосов
/ 07 ноября 2012

Что вам нужно, так это PowerShell 3 и его Invoke-RestMethod , ConvertTo-Json и ConvertFrom-Json командлеты .Ваш код будет выглядеть примерно так:

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

и даже не нужно вызывать ConvertFrom-Json в полученном $ stuff => он уже находится в пригодном для использования нестроковом формате.

Что касается POST | PUT, просто используйте хэши и массивы PowerShell для структурирования ваших данных, а затем вызовите ConvertTo-Json для них перед передачей в invoke-RestMethod или invoke-WebRequest:

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

Подробнее см. http://technet.microsoft.com/en-us/Library/hh849971.aspx.

3 голосов
/ 04 января 2011

Вы можете использовать DataContractJsonSerializer , который является частью стандартной библиотеки .Net.

2 голосов
/ 04 января 2011

@ Jaykul написал хороший набор функций RESTful, которые являются частью его сценария Mindtouch dreamwiki: http://poshcode.org/691

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...