Cette commande curl fonctionne comme vous le souhaitez:
curl -H "X-Api-Key:j65k423lj4k2l3fds" `
-X PUT `
-d "alerts_enabled=true" `
https://some/working/file.xml
Comment puis-je recréer cela nativement dans PS avec Invoke-WebRequest
? J'ai essayé
Invoke-WebRequest -Headers @{"X-Api-Key" = "j65k423lj4k2l3fds"} `
-Method PUT `
-Body "alerts_enabled=true" `
-Uri https://some/working/file.xml
J'ai également essayé de créer des objets pour tous les paramètres (par exemple, $headers = @{"X-Api-Key" = "Key:j65k423lj4k2l3fds"}
et transmettre -Headers $headers
).
Merci
l'a fait fonctionner de manière native en utilisant invoke-webrequest. Un gourou powershell ici au travail m'a aidé. Basculé vers la nouvelle version 2 de l'API Relic (disponible sur https://rpm.newrelic.com/api/explore ), qui utilise JSON au lieu de xml, et a effectué quelques modifications 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
Essayez d’ajouter le paramètre -ContentType, par exemple:
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
Cela se traduit par une demande qui ressemble à ceci (de 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
Pour les tests, j'ai changé l'URL de https à http. Si cela ne fonctionne pas, téléchargez Fiddler et examinez la demande RAW lorsque curl est utilisé pour voir ce qui est différent.
Cela fonctionne pour moi dans Powershell en utilisant l'alias curl
à Invoke-WebRequest
...
curl -H @{"X-Api-Key" = "j65k423lj4k2l3fds"} -Method PUT 'https://some/working/file.xml'