Problem mit Invoke-RestMethod
Hallo,
sorry für die "Anfängerfrage", ich mach sonst kaum etwas mit der PS und komm momentan nicht weiter
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:
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 ...
sorry für die "Anfängerfrage", ich mach sonst kaum etwas mit der PS und komm momentan nicht weiter
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 ...
Please also mark the comments that contributed to the solution of the article
Content-Key: 41969359383
Url: https://administrator.de/contentid/41969359383
Printed on: May 10, 2024 at 10:05 o'clock
3 Comments
Latest comment
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"}
# Send a GET request including Basic authentication.
$Params = @{
Uri = "https://jsonplaceholder.typicode.com/posts"
Authentication = "Basic"
Credential = $Cred
}
Invoke-RestMethod @Params
https://adamtheautomator.com/invoke-restmethod/
Dort werden Creds und Token behandelt. Ggf. auf diese Art?