как воссоздать рабочую команду CURL с помощью Invoke-WebRequest в Powershell
эта команда curl работает по желанию:
curl -H "X-Api-Key:j65k423lj4k2l3fds" `
-X PUT `
-d "alerts_enabled=true" `
https://some/working/file.xml
как я могу воссоздать Это изначально в PS с Invoke-WebRequest
? Я пытался
Invoke-WebRequest -Headers @{"X-Api-Key" = "j65k423lj4k2l3fds"} `
-Method PUT `
-Body "alerts_enabled=true" `
-Uri https://some/working/file.xml
Я также попытался сделать объекты для всех параметров (например,$headers = @{"X-Api-Key" = "Key:j65k423lj4k2l3fds"}
и проходя мимо -Headers $headers
).
спасибо
3 ответов
попробуйте добавить параметр-ContentType, например:
Invoke-WebRequest -Headers @{"X-Api-Key" = "j65k423lj4k2l3fds"} -Method PUT `
-Body "alerts_enabled=true" -Uri https://some/working/file.xml `
-ContentType application/x-www-form-urlencoded
это приводит к запросу, который выглядит так (от Fiddler):
PUT http://some/working/file.xml HTTP/1.1
X-Api-Key: j65k423lj4k2l3fds
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; en-US) WindowsPowerShell/5.0.9701.0
Content-Type: application/x-www-form-urlencoded
Host: some
Content-Length: 19
Expect: 100-continue
alerts_enabled=true
для тестирования я изменил URL-адрес с https на http. Если это не работает, загрузите Fiddler и проверьте необработанный запрос, когда curl используется, чтобы увидеть, что отличается.
получил его для работы изначально с помощью invoke-webrequest. гуру powershell здесь на работе помог мне. Переключился на новый Relic API версии 2 (доступно по адресуhttps://rpm.newrelic.com/api/explore), который использует JSON вместо xml и сделал некоторые настройки sytax.
$json = @"{"alert_policy":[{"enabled":"true"}]"@
$headers = @{}
$headers["X-Api-Key"] = "j65k423lj4k2l3fds"
Invoke-WebRequest -Uri "https://some/working/file.json" -Body $json -ContentType "application/json" -Headers $headers -Method Post
это работает для меня в Powershell с помощью curl
псевдоним Invoke-WebRequest
...
curl -H @{"X-Api-Key" = "j65k423lj4k2l3fds"} -Method PUT 'https://some/working/file.xml'