Powershell v3 Invoke-RestMethod
Je cherche à faire usage de la nouvelle invoke-restmethod applet de commande pour afficher un fichier JSON et ont réussi à le faire. Cependant, je n'ai pas reçu une réponse du serveur comme je l'ai fait lors de l'utilisation de CURL. Pour ce que je suis en train de réaliser j'ai besoin de prendre des informations à partir de la reposne de la POSTE et de les utiliser pour un autre POSTE de commande.
Quelqu'un peut-il expliquer comment je peux obtenir la réponse attendue à partir du serveur? Ci-dessous sont les deux commandes le 1er CURL, 2e à l'aide Invoke-RestMethod. La commande curl va effectuer le bon POST et de renvoyer une réponse. La commande Powershell va effectuer le bon POST, mais ne sera pas de retour une réponse.
Grâce
edit: La principale chose que je crois que je suis en train d'essayer d'obtenir de sortie ps est "en-têtes de réponse" ie. la sortie ci-dessous à partir d'une commande 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
<
Commande Curl
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
-OutFile path-to-file
. Elle affirme également la cmdlet sorties XmlDocument, HtmlWebResponseObject et de la corde. Il apparaît manifestement comme cela devrait fonctionner. Je voudrais essayer d'utiliser -OutFile c:\response.txt
comme un potentiel de travail. Si cela ne fonctionne pas, je dirais qu'il est temps de remplir un rapport de bogue. BTW, qui permettent de construire de la V3 utilisez-vous?Je crois que j'ai dit à ma question de manière incorrecte. Je suis en effet l'obtention de la sortie de la commande powershell, mais je ne reçois pas tout ce que la commande curl sorties. Notamment l'entête de la requête. Je vais reformuler ma question ci-dessus.
La sortie que vous obtenez? Essayez d'exécuter la sortie à travers
| Get-Member
pour voir quel type d'objet que vous obtenez. Gardez à l'esprit que, par défaut, PowerShell n'est pas toujours afficher toutes les informations disponibles sur un objet.
OriginalL'auteur floyd | 2012-07-25
Vous devez vous connecter pour publier un commentaire.
Après un peu de pêche, j'ai découvert l'applet de commande
Invoke-WebRequest
. Cette applet de commande est fondamentalement identique àInvoke-RestMethod
autres que le fait qu'il renvoie les en-têtes ainsi que de la réponse.Il semble que les deux $result=Invoke-RestMethod ... et $result=Invoke-WebRequest ..., lorsqu'il est utilisé avec -OutFile, ne pas fournir le code d'état HTTP, etc dans le $objet de résultat, C'est la valeur null dans mes tests sur Win 8.1 PS4. Au lieu de cela, j'ai abandonné -OutFile, et en vérifiant $résultat.StatusCode et puis l'Écriture de Sortie $résultat.ToString | Set-Content $fichier (je fais face à un texte si $résultat.le contenu ne sont pas nécessaires)
OriginalL'auteur floyd