L'exécution curl via powershell - comment construire des arguments?
Je suis en train de lancer curl pour télécharger un fichier dans mon script, à l'aide de lot a été douloureux parce que j'ai besoin de faire de manipulation de chaîne etc ... donc je me suis tourné vers powershell.
Cependant, je n'arrive pas à obtenir powershell pour exécuter 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
Il en résulte:
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 est dans mon CHEMIN.
curl
-> curl.exe
hein.. pourquoi est-ce que le travail?
Pour ajouter à ce que @PetSerAl dit - lors de l'appel de "curl", il est mappé comme un alias pour le Invoike-WebRequest applet de commande. Utiliser "curl.exe" à l'appel de la boucle de l'exécutable. Vous pouvez le vérifier avec: Get-Alias -nom curl
Ah je ne savais pas qu'il était intégré dans la chose, si quelqu'un ajoute une réponse, je vais accepter
doit obtenir la accepté de répondre.
OriginalL'auteur paulm | 2015-06-12
Vous devez vous connecter pour publier un commentaire.
Dans PowerShell
curl
est un construit dans alias pourInvoke-WebRequest
applet de commande. Et alias avoir la priorité dans la résolution de commande. Pour résoudre votre problème, vous avez plus spécifiquement, l'utilisationcurl.exe
au lieu decurl
, de sorte que la commande n'est pas réglée à l'alias. Ou vous pouvez supprimer des aliasRemove-Item alias:curl
, mais comme c'est de construire dans alias, vous devez mettre cette commande dans votre profil, ou de l'invoquer dans chaque session.Si vous n'êtes pas sûr de savoir comment PowerShell régler votre commande, vous pouvez utiliser
Get-Command
applet de commande:Get-Alias -Name yourcommand
.Tu veux dire
-Definition
?Get-Alias -Definition Invoke-WebRequest
Je voulais dire
-Name
:Get-Alias -Name curl
. Je devrais probablement avoir dit "pour vérifier si, pour une commande donnée le nom d'un alias avec le même nom existe".OriginalL'auteur PetSerAl