Wiki di Michele

Invoke-WebRequest e Invoke-RestMethod

GuidaUltima modifica: 24/10/2026 Verificata il 24/10/2026

Cmdlet per interagire con siti web e API HTTP, equivalenti di curl e wget.

Invoke-WebRequest (iwr)

Restituisce l'intera risposta HTTP: stato, intestazioni, contenuto.

Invoke-WebRequest https://esempio.it
(Invoke-WebRequest https://esempio.it).StatusCode
(Invoke-WebRequest https://esempio.it).Headers
(Invoke-WebRequest https://esempio.it).Content
Invoke-WebRequest https://esempio.it -Method Head

Scaricare un file:

Invoke-WebRequest https://esempio.it/file.zip -OutFile .\file.zip
Invoke-WebRequest https://esempio.it/file.iso -OutFile D:\file.iso -Resume

In Windows PowerShell 5.1 la barra di avanzamento rallenta molto i download grandi:

$ProgressPreference = 'SilentlyContinue'

Aggiungi -UseBasicParsing in 5.1 se Internet Explorer non è configurato.

Invoke-RestMethod (irm)

Pensato per le API: converte automaticamente JSON e XML in oggetti.

Invoke-RestMethod https://api.ipify.org?format=json
(Invoke-RestMethod https://api.github.com/repos/PowerShell/PowerShell).stargazers_count
Invoke-RestMethod https://api.esempio.it/utenti | Select-Object nome, email

Metodi, intestazioni e corpo

$headers = @{ Authorization = "Bearer $token"; Accept = "application/json" }

Invoke-RestMethod https://api.esempio.it/dati -Headers $headers

$corpo = @{ nome = "Michele"; ruolo = "admin" } | ConvertTo-Json
Invoke-RestMethod https://api.esempio.it/utenti -Method Post -Headers $headers -Body $corpo -ContentType "application/json"

Invoke-RestMethod https://api.esempio.it/utenti/1 -Method Put -Body $corpo -ContentType "application/json"
Invoke-RestMethod https://api.esempio.it/utenti/1 -Method Delete
ParametroSignificato
-MethodGet, Post, Put, Patch, Delete, Head
-HeadersHashtable di intestazioni
-BodyCorpo della richiesta
-ContentTypeTipo del corpo
-CredentialAutenticazione di base
-TimeoutSecTimeout in secondi
-SkipCertificateCheckIgnora errori del certificato (solo PowerShell 7+, da evitare)
-OutFileSalva su file

Form e upload

Invoke-RestMethod https://esempio.it/login -Method Post -Body @{ utente = "x"; pass = "y" }
Invoke-RestMethod https://esempio.it/upload -Method Post -Form @{ file = Get-Item .\foto.jpg }

-Form è disponibile da PowerShell 7.

Gestire gli errori

try {
    $r = Invoke-RestMethod https://api.esempio.it/dati -ErrorAction Stop
} catch {
    $_.Exception.Response.StatusCode.value__
    $_.Exception.Message
}

TLS in Windows PowerShell 5.1

Se ricevi errori di canale sicuro con siti moderni:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Estrarre dati da una pagina

$r = Invoke-WebRequest https://esempio.it
$r.Links | Select-Object href, innerText
$r.Images.src
([regex]::Matches($r.Content, '<title>(.*?)</title>')).Groups[1].Value

Controllare un sito

try { (Invoke-WebRequest https://esempio.it -UseBasicParsing -TimeoutSec 10).StatusCode } catch { "ERRORE: $($_.Exception.Message)" }

Attenzione

Tag

comandipowershellwindows

Altre pubblicazioni in questa sezione

Suggerisci una correzione