2015-06-12 5 views
7

मैं अपनी स्क्रिप्ट में एक फ़ाइल अपलोड करने के लिए कर्ल चलाने की कोशिश कर रहा हूं, बैच दर्दनाक था क्योंकि मुझे स्ट्रिंग मैनिपुलेशन आदि करने की ज़रूरत है, इसलिए मैं पावरहेल में बदल गया।शक्तियों के माध्यम से कर्ल चलाना - तर्क कैसे बनाएं?

हालांकि मैं कर्ल निष्पादित करने के लिए powershell पाने के लिए प्रतीत नहीं कर सकते हैं:

Invoke-WebRequest : Parameter cannot be processed because the parameter name 'T' is ambiguous. Possible matches include: 
-TimeoutSec -TransferEncoding. 
At line:5 char:24 
+ curl --ftp-create-dirs -T $fileToUpload -u ${user}:${pass} ftp://example.com/$ha ... 
+      ~~ 
    + CategoryInfo   : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException 
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 

Curl.exe मेरे पथ में है:

$hash = "test" 
$fileToUpload = "hello world.txt" 
$user = "user" 
$password = "passy" 
curl --ftp-create-dirs -T $fileToUpload -u ${user}:${pass} ftp://example.com/$hash/$fileToUpload 

यह परिणाम है।

+6

'curl' ->' – PetSerAl

+0

हुह .. क्यों कि काम करता है curl.exe'? – paulm

+2

@PetSerAl ने जो कहा है उसे जोड़ने के लिए - "कर्ल" को कॉल करते समय, इसे इनवोइक-वेबरक्वैस्ट cmdlet के उपनाम के रूप में मैप किया जाता है। कर्ल निष्पादन योग्य कॉल करने के लिए "curl.exe" का प्रयोग करें। आप इसकी पुष्टि कर सकते हैं: Get-alias -name curl – dugas

उत्तर

15

पावरशेल curl में Invoke-WebRequest cmdlet के लिए उपनाम में एक निर्माण है। और उपनाम संकल्प में उपनाम प्राथमिकता है। अपनी समस्या को हल करने के लिए आपके पास अधिक विशिष्ट है, curl के बजाय curl.exe का उपयोग करें, इसलिए आदेश को उपनाम के लिए हल नहीं किया गया है। या आप उपनाम Remove-Item alias:curl को हटा सकते हैं, लेकिन जैसा कि यह उपनाम में बनाया गया है, आपको यह आदेश अपनी प्रोफ़ाइल में रखना होगा, या प्रत्येक सत्र में इसे आमंत्रित करना होगा।

क्या आप वाकई कैसे अपने आदेश को हल PowerShell, तो आप Get-Command cmdlet का उपयोग कर सकते हैं नहीं कर रहे हैं:

Get-Command curl 
Get-Command curl.exe 
+0

आप यह भी देख सकते हैं कि किसी दिए गए कमांड नाम के लिए कोई उपनाम मौजूद है, 'Get-alias -Name yourcommand' चलाकर। –

+0

@AnsgarWiechers आप का मतलब है 'परिभाषा'? 'Get-alias -Definition Invoke-WebRequest' – PetSerAl

+2

मेरा मतलब था' -नाम ':' Get-alias -Name curl'। मुझे शायद यह कहना चाहिए था कि "किसी दिए गए कमांड नाम के लिए एक ही नाम के साथ उपनाम मौजूद है या नहीं"। –

संबंधित मुद्दे