2016-10-24 4 views
0

Ich versuche, auf unserem lokalen Server auf eine Web-API für Sonarqube zuzugreifen. Die Beispiele in der Sonarqube-Dokumentation sind alle auf der Grundlage von Curls und ich versuche, sie in PowerShell zu übersetzen, entweder Invoke-WebRequest oder Invoke-RestMethod. Ich habe Probleme mit Anmeldeinformationen. Ich bekomme immer einen 401 Nicht Autorisierten Fehler. Ich habe jeden Beitrag gelesen, den ich dazu finden kann, und ich sehe keine umfassende vollständige Antwort darauf.Invoke-RestMethod oder Invoke-WebRequest Version von curl?

Hier ist, was ich laufen jetzt:

$user='myUserid' 
$password='myPassword' 
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd) 
$uri="http://myServer.ad1.prod:9000/api/properties" 
Invoke-RestMethod -Uri $uri -Credential $cred -Method Get 

Und die Antwort ist:

Invoke-RestMethod : {"err_code":401,"err_msg":"Unauthorized"} 

Ich habe den curl Befehl ausführen wie in der ursprünglichen Produktdokumentation definiert und es funktioniert. Gleiche Benutzer-ID, dasselbe Passwort, dieselbe URI, dieselbe Methode.

Kann jemand beraten?

Mein curl Befehl lautet:

curl -u myID:myPassword X GET http://myServer.ad.prod:9000/api/properties 
+0

Wie sind vorbei Sie die Anmeldeinformationen mit 'curl'? –

+0

@AnsgarWiechers - siehe bearbeitet Post –

Antwort

2

Ich glaube, Sie wie dies in einem Berechtigungsnachweis übergeben müssen:

$username = "user" 
$password = "password" 
$authInfo = ("{0}:{1}" -f $username,$password) 
$authInfo = [System.Text.Encoding]::UTF8.GetBytes($authInfo) 
$authInfo = [System.Convert]::ToBase64String($authInfo) 
$headers = @{Authorization=("Basic {0}" -f $authInfo)} 

Invoke-RestMethod -Method Head -Uri "https://pathtowhatever" -ContentType 'text/json' -Headers $headers 
+0

Das hat es getan. Vielen Dank. –