Ce face Invoke-WebRequest
Invoke-WebRequest trimite o cerere către o pagină sau un serviciu web și întoarce un obiect BasicHtmlWebResponseObject cu proprietățile StatusCode, StatusDescription, Content (corpul răspunsului), Headers, Links, Images, InputFields și RawContentLength. Îl folosești când te interesează răspunsul HTTP în sine sau când descarci un fișier cu -OutFile; pentru API-uri JSON, Invoke-RestMethod îți dă direct datele convertite.
Din PowerShell 6.0, toate cererile folosesc doar parsarea simplă a HTML-ului, iar -UseBasicParsing a rămas numai pentru compatibilitate și nu mai are niciun efect. În Windows PowerShell 5.1 parsarea completă depindea de Internet Explorer, de aceea vei vedea des -UseBasicParsing în scripturile vechi. Din PowerShell 7.4, codificarea implicită a cererilor este UTF-8 (înainte era ASCII), iar -OutFile poate primi doar un folder: numele fișierului se ia din ultima parte a adresei.
Pentru un răspuns cu cod de eroare (404, 500 etc.), comanda nu întoarce nimic și aruncă o eroare care oprește execuția; o prinzi cu try/catch sau adaugi -SkipHttpErrorCheck (din PowerShell 7.0) ca să primești răspunsul ca pe unul reușit. Din PowerShell 7.0, proxy-ul se citește și din variabilele de mediu HTTP_PROXY, HTTPS_PROXY și NO_PROXY. Alias: iwr.
Parametri
| Parametru | Descriere |
|---|---|
-Uri |
Adresa cererii. Este parametrul pozițional, deci poate lipsi numele lui. |
-Method |
Metoda HTTP: Get (implicit), Post, Put, Patch, Delete, Head, Options etc. Pentru alte metode există -CustomMethod. |
-Headers |
Tabel hash cu antetele cererii, de exemplu @{ Authorization = "Bearer $token" }. |
-Body |
Corpul cererii. Un tabel hash la o cerere GET devine parametri în adresă; la alte metode este trimis în format nume=valoare. |
-ContentType |
Tipul conținutului trimis, de exemplu application/json; charset=utf-8. |
-OutFile |
Salvează răspunsul în fișier în loc să-l întoarcă. Cu -PassThru le faci pe amândouă. |
-Resume |
Reia descărcarea unui fișier parțial (cere -OutFile). Din PowerShell 6.1. |
-SkipHttpErrorCheck |
Tratează răspunsurile 4xx și 5xx ca reușite, fără eroare. Din PowerShell 7.0. |
-ConnectionTimeoutSeconds |
Câte secunde poate aștepta cererea; 0 (implicit) înseamnă fără limită. Din PowerShell 7.4 înlocuiește -TimeoutSec, care a rămas alias. |
-MaximumRetryCount / -RetryIntervalSec |
De câte ori și la ce interval reîncearcă la coduri între 400 și 599 sau 304. |
-SessionVariable / -WebSession |
Creează, respectiv refolosește o sesiune web cu cookie-uri, antete și credențiale. |
-SkipCertificateCheck |
Nu verifică certificatul HTTPS (doar pentru teste, de exemplu certificate autosemnate). Din PowerShell 6.0. |
Ce returnează
Un obiect BasicHtmlWebResponseObject; cu -OutFile fără -PassThru, nimic.
Exemple
Exemplul 1: Codul de stare și tipul conținutului unei pagini
Salvăm răspunsul într-o variabilă și citim două proprietăți ale lui.
$r = Invoke-WebRequest -Uri https://www.exemplu.ro
$r.StatusCode
$r.Headers['Content-Type']
Ieșire în terminal
200
text/html; charset=UTF-8
Exemplul 2: Descărcarea unui fișier
Cu -OutFile conținutul ajunge direct în fișier; în terminal apare doar bara de progres, apoi nimic.
Invoke-WebRequest -Uri https://www.exemplu.ro/rapoarte/vanzari-2026.csv -OutFile C:\Proiecte\facturi\vanzari-2026.csv
Exemplul 3: Verificarea unei pagini care lipsește, fără eroare
Cu -SkipHttpErrorCheck, răspunsul 404 este întors normal și poți citi codul de stare.
$r = Invoke-WebRequest -Uri https://www.exemplu.ro/pagina-veche -SkipHttpErrorCheck
$r.StatusCode
Ieșire în terminal
404
Greșeli frecvente
- Folosești
Invoke-WebRequestpentru un API JSON și apoi parsezi manual.Content:Invoke-RestMethodface conversia automat (sau trimite.ContentlaConvertFrom-Json). - Aștepți ca un răspuns 404 să fie pus în variabilă: fără
-SkipHttpErrorCheck, comanda aruncă o eroare, iar variabila rămâne goală. - Citești
$r.ParsedHtmldin exemple pentru Windows PowerShell 5.1: în PowerShell 7 proprietatea nu există; foloseșteLinks,ImagessauContent. - Pui
-SkipCertificateCheckîn scripturi de producție: dezactivează verificarea certificatului și expune conexiunea; folosește-l doar la teste.
Comenzi înrudite
Invoke-RestMethod: Apelează un API REST și transformă automat răspunsul JSON sau XML în obiecte PowerShell, gata de filtrat și afișat.try / catch / finally: try/catch prinde erorile care opresc o comandă, iar finally rulează mereu; pentru erorile obișnuite ale cmdlet-urilor pui -ErrorAction Stop.ConvertFrom-Json: Transformă un text JSON în obiecte PowerShell (sau hashtable-uri), ale căror câmpuri le citești cu punct.Out-File: Salvează într-un fișier ieșirea unei comenzi, exact cum apare în consolă; operatorii de redirecționare > și >> fac același lucru.