2012-07-25 19 views
8

मैं एक JSON फ़ाइल पोस्ट करने के लिए नए invoke-restmethod cmdlet का उपयोग करने का प्रयास कर रहा हूं और सफलतापूर्वक ऐसा किया है। हालांकि, मुझे कर्सर का उपयोग करते समय वेबसर्वर से प्रतिक्रिया प्राप्त नहीं हुई है। जो मैं पूरा करने की कोशिश कर रहा हूं उसके लिए मुझे रिपोसेन से POST तक जानकारी लेने की आवश्यकता है और इसे किसी अन्य POST कमांड के लिए उपयोग करने की आवश्यकता है।पावरहेल v3 Invoke-RestMethod

क्या कोई बता सकता है कि मैं सर्वर से अपेक्षित प्रतिक्रिया कैसे प्राप्त कर सकता हूं? नीचे कर्ल में दो आदेश हैं, दूसरा Invoke-RestMethod का उपयोग कर। कर्ल कमांड सही पोस्ट करेगा और एक प्रतिक्रिया वापस करेगा। पावरहेल कमांड सही पोस्ट करेगा लेकिन प्रतिक्रिया वापस नहीं करेगा।

धन्यवाद

संपादित करें: मुख्य बात मेरा मानना ​​है कि मैं ps उत्पादन से प्राप्त करने के लिए कोशिश कर रहा हूँ "प्रतिक्रिया हेडर" यानी है। एक कर्ल आदेश

< 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 -f -v -s -k --no-sessionid -H X-em7-beautify-response:1 -H content- type:application/json https://URLHERE --data-binary @jsonfile.json 

Powershell कोड

$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 
+0

दस्तावेज़ कहते हैं कि यह cmdlet परिणामों को स्वचालित रूप से पाइपलाइन के नीचे भेजना है जबतक कि आप '-उटफाइल पथ-टू-फ़ाइल' निर्दिष्ट नहीं करते हैं। यह भी दावा करता है कि cmdlet XmlDocument, HtmlWebResponseObject और स्ट्रिंग आउटपुट करता है। यह स्पष्ट रूप से ऐसा लगता है कि यह काम करना चाहिए। मैं '-OutFile c: \ response.txt' का उपयोग एक संभावित कार्य के रूप में करने का प्रयास करूंगा। अगर यह काम नहीं करता है, तो मैं कहूंगा कि यह एक बग फाइल करने का समय है। बीटीडब्ल्यू, जो आप वी 3 का निर्माण कर रहे हैं? –

+0

मुझे लगता है कि मैंने अपना प्रश्न गलत तरीके से बताया होगा। मैं वास्तव में powerhell कमांड से आउटपुट प्राप्त कर रहा हूं, लेकिन मुझे कर्ल कमांड आउटपुट की हर चीज नहीं मिल रही है। सबसे विशेष रूप से अनुरोध हेडर। मैं ऊपर अपना प्रश्न बहाल करूंगा। – floyd

+0

आपको क्या उत्पादन मिलता है? '| के माध्यम से आउटपुट चलाने का प्रयास करें यह देखने के लिए गेट-सदस्य 'कि आप किस प्रकार की ऑब्जेक्ट प्राप्त कर रहे हैं। ध्यान रखें कि डिफ़ॉल्ट रूप से, PowerShell हमेशा किसी ऑब्जेक्ट पर उपलब्ध सभी जानकारी प्रदर्शित नहीं करता है। –

उत्तर

17

से नीचे उत्पादन कुछ मछली पकड़ने के बाद चारों ओर मैं cmdlet Invoke-WebRequest की खोज की। यह cmdlet मूल रूप से Invoke-RestMethod के समान है जो इस तथ्य के अलावा है कि यह हेडर और प्रतिक्रिया देता है।

+0

स्पष्ट रूप से मैं 2 दिनों के लिए अपना जवाब स्वीकार नहीं कर सकता। तो फिर आप देखें :) – floyd

+1

ऐसा लगता है कि दोनों $ परिणाम = Invoke-RestMethod ... और $ result = Invoke-WebRequest ..., जब -उटफाइल के साथ उपयोग किया जाता है, तो $ परिणाम ऑब्जेक्ट में HTTP स्थिति कोड आदि प्रदान न करें , यह Win 8.1 PS4 पर मेरे परीक्षण में शून्य है। इसके बजाय मैंने -ऑटफाइल गिरा दिया है और $ परिणाम की जांच कर रहा है। स्टेटस कोड और फिर लिखें-आउटपुट $ परिणाम। टॉस्ट्रिंग | सेट-कंटेंट $ फ़ाइल (मैं टेक्स्ट से निपट रहा हूं इसलिए $ result.content की आवश्यकता नहीं है) – Straff