2015-06-12 19 views
7

Tôi đang cố gắng chạy curl để tải lên một tệp trong tập lệnh của mình, sử dụng hàng loạt là đau đớn vì tôi cần phải thực hiện thao tác chuỗi vv vì vậy tôi đã chuyển sang PowerShell.Chạy curl qua powershell - cách xây dựng đối số?

Tuy nhiên tôi dường như không thể có được PowerShell để thực hiện Curl:

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

Điều này dẫn đến:

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 là trong PATH của tôi.

+6

'curl' -> 'curl.exe' – PetSerAl

+0

huh .. tại sao mà làm việc? – paulm

+2

Để thêm vào những gì @PetSerAl đã nói - khi gọi "curl", nó được ánh xạ dưới dạng bí danh cho lệnh ghép ngắn Invoike-WebRequest. Sử dụng "curl.exe" để gọi thực thi curl. Bạn có thể xác nhận điều này với: Get-Alias ​​-name curl – dugas

Trả lời

15

Trong PowerShell curl là bản dựng bí danh cho lệnh ghép ngắn Invoke-WebRequest. Và bí danh có ưu tiên trong độ phân giải lệnh. Để giải quyết vấn đề của bạn, bạn phải cụ thể hơn, sử dụng curl.exe thay vì curl, vì vậy lệnh không được giải quyết thành bí danh. Hoặc bạn có thể loại bỏ bí danh Remove-Item alias:curl, nhưng khi nó được xây dựng trong bí danh, bạn phải đặt lệnh này trong hồ sơ của bạn hoặc gọi nó trong mỗi phiên.

Nếu bạn không chắc chắn như thế nào PowerShell giải quyết lệnh của bạn, sau đó bạn có thể sử dụng Get-Command cmdlet:

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

Bạn cũng có thể kiểm tra xem một bí danh tồn tại cho một tên lệnh nhất định bằng cách chạy 'Get-Alias ​​-Name yourcommand'. –

+0

@AnsgarWiechers Bạn có nghĩa là '-Definition'? 'Get-Alias ​​-Definition Invoke-WebRequest' – PetSerAl

+2

Tôi có nghĩa là' -Name': 'Get-Alias ​​-Name curl'. Tôi có lẽ nên nói "để kiểm tra nếu cho một lệnh cho một bí danh với cùng tên tồn tại". –

Các vấn đề liên quan