2017-08-02 1 views
0

Ich versuche, eine Datei an den 'Downloads' Abschnitt eines Bitbucket-Repository zu senden. Ich folge this Seite von Bitbucket-Dokumentation. Ich versuche dies zu tun, indem ich ein Powershell-Skript schreibe. Ich habe es geschafft, die GET-Methode, um zu arbeiten:Kann POST nicht mit Powershell und Bitbucket arbeiten

#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 

Um das zu bekommen GET ich Token, um den Zugang hinzufügen musste arbeiten, die ich durch Bitbucket gemacht (daher den gesamten Text für den Zugriffstoken Teil der Uri).

Ich bin mir nicht sicher, wie man den POST durchführt. Ich habe versucht, verschiedene Dinge, einschließlich etwas ähnliches in der Dokumentation:

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

Der Fehler ich in Powershell erhalten, wenn dieser Befehl ausgeführt ist:

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 

ich auch mit dem Zugriffstoken versucht haben, hinzugefügt die URL (ähnlich wie ich das GET gemacht habe).

Die Datei, die ich POST versuchen soll, ist "Hello.txt", die auf meinem Desktop ist - derselbe Speicherort wie mein Powershell-Skript.

Irgendwelche Ideen?

BEARBEITEN: Ich habe den Ratschlag von briantist gefolgt und stattdessen auf die Verwendung von Anmeldeinformationen umgestellt. Jetzt bekomme ich einen 'Bad Request (400)' Fehler. Hier ist mein 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

'kräuseln -s -u myBitbucketUsername-X POST' Ist Ihnen bewusst, da sollte ein Leerzeichen zwischen 'myBitbucketUsername' und' -X' liegen? – Milk

+0

@Milk oops - das ist ein Tippfehler beim Kopieren in den Post. Ich habe den Beitrag aktualisiert. – Roka545

Antwort

1

curl in Powershell ist ein Alias ​​für Invoke-WebRequest (und so ist wget). Das war ein Fehler; Sie sollten dies nicht getan haben, weil die Parameter nicht die gleichen sind und Invoke-WebRequest, während etwas ähnliches tun, ist kein Drop-in-Ersatz.

Der Fehler sagt Ihnen, was das Problem ist: -u ist mehrdeutig für Invoke-WebRequest. Es hat 3 Parameter, die möglicherweise sein könnten, und es sagt dir, was sie sind.

Aber kritisch versuchen Sie, es als Benutzername zu verwenden, der Invoke-WebRequest überhaupt nicht akzeptiert (es dauert ein [PSCredential] Objekt, kein separater Klartext Benutzername und ein Kennwort).

So sollten Sie look at how to use credentials with Invoke-WebRequest, oder verwenden Sie curl direkt, wenn Sie es haben und es verwenden möchten.

Ein Weg, um den Alias ​​zu bekommen, ist es mit der Erweiterung zu nennen: curl.exe

Eine andere Möglichkeit, den Alias ​​zu entfernen ist: Remove-Alias -Name curl

+0

Ich bin zur Verwendung von Anmeldeinformationen übergegangen, aber jetzt erhalte ich einen Bad Request (400) -Fehler. Ich habe mehr Informationen am Ende des ursprünglichen Beitrags hinzugefügt. – Roka545

+1

@ Roka545 Sie können eine Datei nicht "POST" erstellen, indem Sie einfach den Dateinamen in den Text eingeben, [verwenden Sie den Parameter '-InFile'] (https://StackOverflow.com/a/22563552/3905079). – briantist

Verwandte Themen