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] . 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-WebRequest — Invoke-RestMethod oddaje tylko sparsowaną treść.
Powiązane polecenia: Invoke-WebRequest, ConvertTo-Json, ConvertFrom-Json, curl (na Linuksie), wget.