michaelmn

Problem mit Invoke-RestMethod

Hallo,

sorry für die "Anfängerfrage", ich mach sonst kaum etwas mit der PS und komm momentan nicht weiter face-smile

Ich habe folgenden, funktionierenden (!) curl - Aufruf an eine REST - API:

curl -u <user>:<passwort> https://<firmenadr>/confluence_secure/rest/api/content/258775490

Wie gesagt, der funktioniert, und liefert das korrekte zurück - und den muss ich in einem PS-Script einfügen. Nur, wie sieht die korrekte PS-Syntax dafür aus?

Ich hab folgendes probiert:

$Credential = Get-Credential -Message "Bitte User/Passwort für Confluence eingeben"  

$Request = Invoke-RestMethod -Method Get -Credential $Credential -Uri "https://<firmenadr>/confluence_secure/rest/api/content/258775490"  

Ausgabe: "Invoke-RestMethod : Der Remoteserver hat einen Fehler zurückgegeben: (404) Nicht gefunden."

Genau das gleiche Codeschnippsel mit Invoke-WebRequest anstatt Invoke-RestMethod ändert genau nichts, gleicher Fehler, 404 nicht gefunden.

Es muss wohl an meiner Autorisierung liegen, die API liefert ja sowohl mittels curl als auch im WebBrowser sehr wohl die richtige Seite. Was also mach ich falsch?

Danke u. LG
Michael

PS: Wenn ich curl innerhalb des PS-Scripts aufrufe, weiss ich leider nicht, wie die curl - Ausgabe richtig an's Script zurückgegeben wird ... face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 41969359383

Url: https://administrator.de/forum/problem-mit-invoke-restmethod-41969359383.html

Ausgedruckt am: 18.07.2025 um 14:07 Uhr

11078840001
Lösung 11078840001 16.02.2024 aktualisiert um 11:23:51 Uhr
Manche APIs wollen den Authorization Header für Basic Auth bei der ersten Anfrage mitgeliefert bekommen, bei Nutzung des Credential Parameters wird erst eine Anfrage ohne den Header gesendet und auf eine 401 http Response gewartet woraufhin erst dann die Creds im Header mitgeschickt werden und das führt dann zu deinem o.g. Ergebnis, also die Credentials mal direkt im Header mitgeben, dann sollte es klappen, sofern die URL auch stimmt 😉
$b64 = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes(("{0}:{1}" -f 'username','password')))  
Invoke-RestMethod "https://<firmenadr>/confluence_secure/rest/api/content/258775490" -Headers @{Authorization="Basic $b64"}  
Crusher79
Crusher79 16.02.2024 um 11:14:56 Uhr
# Send a GET request including Basic authentication.
$Params = @{
	Uri = "https://jsonplaceholder.typicode.com/posts"  
	Authentication = "Basic"  
	Credential = $Cred
}

Invoke-RestMethod @Params

adamtheautomator.com/invoke-restmethod/

Dort werden Creds und Token behandelt. Ggf. auf diese Art?
MichaelMN
MichaelMN 16.02.2024 um 12:13:49 Uhr
Das war's, herzlichen Dank! face-smile