Powershell v3 Invoke-RestMethod

Я пытаюсь использовать новый командлет invoke-restmethod для размещения файла JSON и успешно это сделал. Тем не менее, я не получаю ответ от веб-сервера, как я получил при использовании CURL. Для того, что я пытаюсь выполнить, мне нужно взять информацию из репозитория в POST и использовать ее для другой команды POST.

Может кто-нибудь объяснить, как я могу получить ожидаемый ответ от сервера? Ниже приведены две команды: 1-я в CURL, 2-я - с помощью Invoke-RestMethod. Команда curl выполнит правильный POST и вернет ответ. Команда Powershell выполнит правильный POST, но не вернет ответ.

Спасибо

edit: Главное, что я пытаюсь получить из вывода ps, это & quot; заголовки ответа & quot; то есть. вывод ниже из команды curl

 < HTTP/1.1 201 Created
 < Date: Thu, 26 Jul 2012 01:20:06 GMT
 < Server: Apache
 < X-EM7-Implemented-methods: GET,PUT,POST
 < X-Powered-By: ScienceLogic,LLC - EM7 API/Integration Server
 < Location: /ticket/321750
 < X-EM7-status-message: ticket /ticket/321750 added.
 < X-EM7-status-code: CREATED
 < Content-Length: 830
 < Content-Type: application/json
 < 

Curl Command

 curl -f -v -s -k --no-sessionid -H X-em7-beautify-response:1 -H content-  type:application/json https://URLHERE --data-binary  @jsonfile.json

Powershell Code

 $cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("certfile.crt")
 $json = Get-Content jsonfile.json
 $cred = Get-Credential -Message "Enter Credentials"

 Invoke-RestMethod -Uri https://URLHERE -Credential $cred -Body $json -Certificate $cert -ContentType application/json -Method POST
 Keith Hill26 июл. 2012 г., 04:42
Какой выход вы получаете? Попробуйте запустить вывод через| Get-Member чтобы увидеть, какой тип объекта вы получаете. Помните, что по умолчанию PowerShell не всегда отображает всю информацию, доступную для объекта.
 Keith Hill26 июл. 2012 г., 03:39
В документах говорится, что этот командлет должен автоматически отправлять результаты по конвейеру, если вы не укажете-OutFile path-to-file, Он также утверждает, что командлет выводит XmlDocument, HtmlWebResponseObject и string. Похоже, это должно работать. Я бы попробовал использовать-OutFile c:\response.txt в качестве потенциального обходного пути. Если это не сработает, я бы сказал, что пришло время сообщить об ошибке. Кстати, какую сборку V3 вы используете?
 floyd26 июл. 2012 г., 03:49
Я думаю, что я, возможно, сформулировал свой вопрос неправильно. Я действительно получаю вывод от команды powershell, но не получаю все, что выводит команда curl. Наиболее заметно заголовок запроса. Я изложу свой вопрос выше.

Ответы на вопрос(1)

Решение Вопроса

Invoke-WebRequest, Этот командлет в основном идентиченInvoke-RestMethod кроме факта, что это возвращает заголовки так же как ответ.

 floyd26 июл. 2012 г., 07:05
Видимо, я не могу принять свой собственный ответ в течение 2 дней. Так что увидимся :)
 24 мар. 2015 г., 00:00
Кажется, что и $ result = Invoke-RestMethod ..., и $ result = Invoke-WebRequest ... при использовании с -OutFile не предоставляют код состояния HTTP и т. Д. В объекте $ result, в моем случае это пустое значение тестирование на Win 8.1 PS4. Вместо этого я удалил -OutFile и проверил наличие $ result.StatusCode, а затем запись-вывод $ result.ToString | Файл $ Set-Content (я имею дело с текстом, поэтому $ result.content не требуется)

Ваш ответ на вопрос