Invoke-RestMethod

Wysyła żądanie HTTP/HTTPS do usługi REST i parsuje odpowiedź.

Invoke-RestMethod (w skrócie irm) to wbudowane w PowerShell polecenie do rozmowy z API REST. Wysyła żądanie HTTP albo HTTPS pod podany adres, a w odpowiedzi — i tu cała magia — od razu parsuje to, co wróciło. JSON zamienia w obiekty PowerShella, po których chodzisz kropką (np. $wynik.data.name), a XML w węzły. Nie musisz ręcznie deserializować odpowiedzi jak przy Invoke-WebRequest. To narzędzie pierwszego wyboru, kiedy chcesz w skrypcie pobrać dane z API, wysłać coś na webhooka albo przeklikać REST-owy backend bez odpalania Postmana.

Składnia i najważniejsze opcje

Podstawowa forma wygląda tak: Invoke-RestMethod [-Uri] [-Method ] [-Body ] [-Headers ]. Parametr -Uri jest pozycyjny, więc adres możesz podać jako pierwszy bez nazwy.

  • -Uri — adres docelowy usługi (HTTP/HTTPS). Domyślny i zwykle jedyny obowiązkowy argument.
  • -Method — metoda HTTP: Get (domyślna), Post, Put, Delete, Patch, Head, Options.
  • -Body — dane wysyłane w żądaniu, najczęściej JSON lub hashtable; przy GET trafiają do query stringa.
  • -Headers — nagłówki jako hashtable, np. token autoryzacji albo Accept.
  • -ContentType — typ treści, np. application/json; przy POST bez tego parametru leci x-www-form-urlencoded.
  • -OutFile — zapisuje surową odpowiedź do pliku zamiast zwracać ją do potoku.
  • -Authentication / -Token — wbudowane schematy uwierzytelniania (Basic, Bearer, OAuth) w PowerShell 6+.
  • -SkipCertificateCheck — pomija weryfikację certyfikatu TLS (PowerShell 6+); do testów, nie na produkcję.

Przykłady użycia

  • Invoke-RestMethod https://api.github.com/users/torvalds — proste GET; wynik dostajesz jako gotowy obiekt, więc od razu działa (irm https://api.github.com/users/torvalds).public_repos.
  • $body = @{ name = "test" } | ConvertTo-Json; Invoke-RestMethod -Uri https://api.example.com/items -Method Post -Body $body -ContentType "application/json" — wysyła JSON-a metodą POST.
  • Invoke-RestMethod -Uri https://api.example.com/secure -Headers @{ Authorization = "Bearer $token" } — żądanie z nagłówkiem autoryzacji Bearer.
  • Invoke-RestMethod -Uri https://example.com/dane.json -OutFile dane.json — pobiera odpowiedź prosto do pliku.
  • Invoke-RestMethod -Uri https://api.example.com/items/5 -Method Delete — kasuje zasób o id 5.

Częste błędy i pułapki

Najczęstsza wpadka to wrzucanie do -Body hashtable bez ConvertTo-Json przy API oczekującym JSON-a — PowerShell wyśle wtedy dane jako formularz i serwer zwróci 400. Druga pułapka: -SkipCertificateCheck, -Authentication i -Token istnieją dopiero od PowerShell 6 (Core). W starym Windows PowerShell 5.1 ich nie ma, a domyślny TLS bywa za niski — wtedy ręcznie ustawiasz [Net.ServicePointManager]::SecurityProtocol. Pamiętaj też, że błąd HTTP 4xx/5xx leci jako wyjątek, więc opakuj wywołanie w try/catch, jeśli chcesz obsłużyć odpowiedzi błędów. I nie myl narzędzi: gdy potrzebujesz kodu statusu czy nagłówków odpowiedzi, użyj Invoke-WebRequestInvoke-RestMethod oddaje tylko sparsowaną treść.

Powiązane polecenia: Invoke-WebRequest, ConvertTo-Json, ConvertFrom-Json, curl (na Linuksie), wget.