ich sitz grad an dem Problem, dass ich eine REST-API mit Daten füttern will, aus der Powershell heraus.
Da Invoke-WebRequest mit dem https-Zertifikat rumspinnt (selbsterstelltes Zertifikat, wird aufs erbrechen nicht von dem Server importiert), und ich die Syntax von dem .net-Webclient absolut nicht raffe, hab ich mir ne aktuelle Version von cUrl gezogen (http://winampplugins.co.uk/curl/ die 64bit-Version)
Abfragen über die API funktionieren, es kommt sauberes JSON an, ConvertFrom-Json kapiert die Struktur auch.
Post-Requests schlagen aber immer fehl, entweder taucht da in dem JSON-String plötzlich ein Zeilenumbruch (\n) auf oder ein Minus mittendrin wird von cUrl als Parameter interpretiert.
Mein Verdacht: falsches Quoting (Ich bin das Verhalten der Bash gewöhnt, PS und cmd sind für mich noch eher Neuland) oder ich muss irgendwelche Zeichen escapen.
Hier mein Aufruf:
.\curl.exe -k -s -u user:passwd -H 'Accept: application/json' -X POST 'https://server:port/v1/actions/process-check-result?service=xxxx!yyy' -d '{ "exit_status": 0, "plugin_output": "looks good", "performance_data": [ "dirsize=123456c;223456;323456;0;500000" ],"check_source": "filer.domain.tld" }'
Ergebnis:
{"error":400.0,"status":"Invalid request body: Error: lexical error: invalid char in json text.\n { 'exit_status': 0, 'plugin_ou\n (right her
e) ------^\n\n"}
Bei einem anderen Test mit dem Inhalt "plugin_output": "OK - bla" wurde das "-" als Parameter interpretiert.
Der gleiche Aufruf unter Linux funktioniert wunderbar.
Wer kann mir auf die Sprünge helfen?
edit: Ich hab mir jetzt mal einen Hashtable in PS erzeut und dann mit Convertto-Json übergeben, der gleiche Schei*
Was hier allerdings auffällt: nach exakt 30 Zeichen kommt der fehlerhafte Char
Edit2: Das hat sich wohl erledigt. Wenn ich innerhalb des JSON-Strings alle doppelten Ausführungszeichen mit nem Backslash escape, dann funktionierts. Nur kann ich jetzt wohl kein Powershell-Objekt mittels Convertto-Json da reinschieben, das macht den Rest von dem Script komplizierter. :|
Für das letzte "Teilproblem" sind also immer noch Anregungen willkommen
Dieser Beitrag wurde von Sturmovik bearbeitet: 18. August 2016 - 20:11