2015-06-12 8 views
7

Próbuję uruchomić curl, aby przesłać plik w moim skrypcie, używanie partii było bolesne, ponieważ potrzebowałem manipulowania ciągami itp., Więc zwróciłem się do powłoki powershell.Uruchamianie curl za pomocą powershell - jak konstruować argumenty?

Jednak nie wydaje się uzyskać PowerShell do wykonywania 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 

Wynika to z:

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 jest w moim PATH.

+6

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

+0

huh .. dlaczego to działa? – paulm

+2

Aby dodać do tego, co powiedział @PetSerAl - podczas wywoływania "curl", jest zamapowany jako alias do cmdletu Invoike-WebRequest. Użyj "curl.exe", aby wywołać plik curl. Możesz to potwierdzić za pomocą: Get-Alias ​​-name curl – dugas

Odpowiedz

15

W programie PowerShell curl jest aliasem kompilacji do cmdletu Invoke-WebRequest. Aliasy mają priorytet w rozkazywaniu poleceń. Aby rozwiązać swój problem, bardziej konkretny, użyj curl.exe zamiast curl, więc polecenie nie jest rozwiązane na alias. Możesz także usunąć alias Remove-Item alias:curl, ale ponieważ jest zbudowany w alias, musisz umieścić to polecenie w swoim profilu lub wywołać go w każdej sesji.

Jeżeli nie jesteś pewien, jak PowerShell rozwiązać polecenie, a następnie można użyć Get-Command komandletu:

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

Możesz również sprawdzić, czy istnieje alias dla danej nazwy polecenia, uruchamiając 'Get-Alias ​​-Name twoja komenda'. –

+0

@AgargarWiechers Masz na myśli '-Definition'? 'Get-Alias ​​-Definition Invoke-WebRequest' – PetSerAl

+2

Miałem na myśli' -Name': 'Get-Alias ​​-Name curl'. Prawdopodobnie powinienem powiedzieć "sprawdzić, czy dla danej nazwy polecenia istnieje alias o tej samej nazwie". –

Powiązane problemy