2017-08-02 4 views
0

J'essaie de POSTER un fichier dans la section "Téléchargements" d'un référentiel Bitbucket. Je suis la page this de la documentation de Bitbucket. J'essaye de faire ceci en écrivant un manuscrit de Powershell. J'ai réussi à obtenir la méthode GET pour travailler avec:Impossible d'utiliser POST pour fonctionner avec Powershell et Bitbucket

#Invoke-RestMethod -Credential $cred -Uri https://api.bitbucket.org/2.0/repositories/myBitbucketUsername/myBitbucketRepoName/downloads?access_token=9EtOz9JDeWGwxTLKx3ya2oPE8g652GoLN0cMmtD0Ncvkf2OXoio0bcXwSigNE9AXTT2aj6qmbS5XHae7rIc%3D"&"scopes=pipeline%3Avariable+webhook+snippet%3Awrite+wiki+issue%3Awrite+pullrequest%3Awrite+repository%3Adelete+repository%3Aadmin+project%3Awrite+team%3Awrite+account%3Awrite"&"expires_in=3600 -OutFile .\file.txt 

Afin d'obtenir que nous au travail que je devais ajouter le jeton d'accès que je fis par Bitbucket (donc tout le texte pour l'accès partie jeton de l'Uri).

Je ne suis pas sûr comment effectuer le POST. J'ai essayé plusieurs choses, y compris quelque chose de similaire à la documentation:

curl -s -u myBitbucketUsername -X POST https://api.bitbucket.org/2.0/repositories/myBitbucketUsername/myBitbucketRepoName/downloads -F [email protected] 

L'erreur que je reçois à l'intérieur Powershell lors de l'exécution de cette commande:

Invoke-WebRequest : Parameter cannot be processed because the parameter name 'u' is ambiguous. Possible matches include: 
-UseBasicParsing -Uri -UseDefaultCredentials -UserAgent. 
At C:\Users\user\Desktop\ScriptTest.ps1:21 char:9 
+ curl -s -u myBitbucketUsername-X POST https://api.bitbucket.org/2.0/reposit ... 
+   ~~ 
    + CategoryInfo   : InvalidArgument: (:) [Invoke-WebRequest], ParameterBindingException 
    + FullyQualifiedErrorId : AmbiguousParameter,Microsoft.PowerShell.Commands.InvokeWebRequestCommand 

J'ai aussi essayé avec le jeton d'accès ajouté à l'URL (similaire à la façon dont j'ai fait le GET).

Le fichier que j'essaye de POST est 'Hello.txt' qui se trouve sur mon bureau - au même endroit que mon script Powershell.

Des idées?

EDIT: Je ai suivi les conseils de briantist et d'utiliser les informations d'identification changé à la place. Maintenant, j'obtiens une erreur 'Bad Request (400)'. Voici mon code:

$postParams = @{files='.\Hello.txt'} 
Invoke-WebRequest -Credential $cred -Uri https://api.bitbucket.org/2.0/repositories/myBitbucketUsername/myRepoName/downloads -ContentType "multipart/form-data" -Method POST -Body $postParams 
+0

'pelotonner -s -u myBitbucketUsername-X POST' Connaissez-vous là-bas devrait être un espace entre 'myBitbucketUsername' et' -X'? – Milk

+0

@Milk oups - c'est une faute de frappe de copier dans la poste. J'ai mis à jour le post. – Roka545

Répondre

1

curl dans PowerShell est un alias pour Invoke-WebRequest (et est donc wget). C'était une erreur ils ne devraient pas avoir fait cela, parce que les paramètres ne sont pas les mêmes et Invoke-WebRequest, tout en faisant quelque chose de similaire, n'est pas un remplacement en drop-in.

L'erreur vous indique quel est le problème: -u est ambigu pour Invoke-WebRequest. Il a 3 paramètres qui pourraient éventuellement être, et il vous dit ce qu'ils sont. Mais, en fait, vous essayez de l'utiliser comme un nom d'utilisateur, ce que Invoke-WebRequest n'accepte pas du tout (il faut un objet [PSCredential], pas un nom d'utilisateur et un mot de passe distincts). Donc, vous devriez look at how to use credentials with Invoke-WebRequest, ou utiliser directement curl, si vous l'avez et que vous voulez l'utiliser.

Une façon de contourner l'alias est de l'appeler avec l'extension: curl.exe

Une autre façon est de supprimer l'alias: Remove-Alias -Name curl

+0

Je suis passé à l'utilisation des informations d'identification, mais maintenant je reçois une erreur Bad Request (400). J'ai ajouté plus d'informations au bas de l'article original. – Roka545

+1

@ Roka545 vous ne pouvez pas "POST" un fichier en mettant simplement le nom du fichier dans le corps, [utilisez le paramètre '-InFile'] (https://stackoverflow.com/a/22563552/3905079). – briantist