Condividi tramite


Invoke-WebRequest

Ottiene il contenuto da una pagina Web su Internet.

Sintassi

Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      [-Method <WebRequestMethod>]
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      [-Method <WebRequestMethod>]
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-NoProxy]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      -CustomMethod <String>
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      -CustomMethod <String>
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-NoProxy]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]

Descrizione

Il Invoke-WebRequest cmdlet invia richieste HTTP e HTTPS a una pagina Web o a un servizio Web. Analizza la risposta e restituisce raccolte di collegamenti, immagini e altri elementi HTML significativi.

Questo cmdlet è stato introdotto in PowerShell 3.0.

A partire da PowerShell 7.0, Invoke-WebRequest supporta la configurazione proxy definita dalle variabili di ambiente. Vedere la sezione Note di questo articolo.

Importante

Gli esempi in questo articolo fanno riferimento agli host nel contoso.com dominio. Si tratta di un dominio fittizio usato da Microsoft per esempi. Gli esempi sono progettati per illustrare come usare i cmdlet. Tuttavia, poiché i contoso.com siti non esistono, gli esempi non funzionano. Adattare gli esempi agli host nell'ambiente in uso.

A partire da PowerShell 7.4, la codifica dei caratteri per le richieste per impostazione predefinita è UTF-8 anziché ASCII. Se è necessaria una codifica diversa, è necessario impostare l'attributo charset nell'intestazione Content-Type .

Esempio

Esempio 1: Inviare una richiesta Web

In questo esempio viene usato il Invoke-WebRequest cmdlet per inviare una richiesta Web al sito Bing.com.

$Response = Invoke-WebRequest -URI https://www.bing.com/search?q=how+many+feet+in+a+mile
$Response.InputFields | Where-Object {
    $_.name -like "* Value*"
} | Select-Object Name, Value

name       value
----       -----
From Value 1
To Value   5280

Il primo comando emette la richiesta e salva la risposta nella $Response variabile .

Il secondo comando ottiene qualsiasi InputField in cui la proprietà Name è simile "* Value"a . I risultati filtrati vengono inviati tramite pipe a Select-Object per selezionare le proprietà Name e Value .

Esempio 2: Usare un servizio Web con stato

Questo esempio illustra come usare il Invoke-WebRequest cmdlet con un servizio Web con stato.

$LoginParameters = @{
    Uri             = 'https://www.contoso.com/login/'
    SessionVariable = 'Session'
    Method          = 'POST'
    Body            = @{
        User     = 'jdoe'
        Password = 'P@S$w0rd!'
    }
}
$LoginResponse = Invoke-WebRequest @LoginParameters
$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session

La prima chiamata a Invoke-WebRequest invia una richiesta di accesso. Il comando specifica un valore di Session per il valore del parametro SessionVariable . Al termine del comando, la $LoginResponse variabile contiene un BasicHtmlWebResponseObject e la $Session variabile contiene un WebRequestSession oggetto . In questo modo l'utente accede al sito.

La seconda chiamata a Invoke-WebRequest recupera il profilo dell'utente, che richiede che l'utente sia connesso al sito. I dati di $Session sessione archiviati nella variabile forniscono cookie di sessione al sito creato durante l'accesso.

Esempio 3: Ottenere collegamenti da una pagina Web

Questo esempio ottiene i collegamenti in una pagina Web. Usa il Invoke-WebRequest cmdlet per ottenere il contenuto della pagina Web. Usa quindi la proprietà Links di BasicHtmlWebResponseObject che Invoke-WebRequest restituisce e la proprietà Href di ogni collegamento.

(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href

Esempio 4: Scrivere contenuto della risposta in un file usando la codifica definita nella pagina richiesta

In questo esempio viene usato il Invoke-WebRequest cmdlet per recuperare il contenuto della pagina Web di una pagina della documentazione di PowerShell.

$Response = Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs"
$Stream = [System.IO.StreamWriter]::new('.\docspage.html', $false, $Response.Encoding)
try {
    $Stream.Write($Response.Content)
} finally {
    $Stream.Dispose()
}

Il primo comando recupera la pagina e salva l'oggetto risposta nella $Response variabile .

Il secondo comando crea un oggetto StreamWriter da usare per scrivere il contenuto della risposta in un file. La proprietà Encoding dell'oggetto risposta viene utilizzata per impostare la codifica per il file.

I pochi comandi finali scrivono la proprietà Content nel file e quindi elimina StreamWriter.

Si noti che la proprietà Encoding è Null se la richiesta Web non restituisce contenuto di testo.

Esempio 5: Inviare un file multipart/form-data

In questo esempio viene usato il Invoke-WebRequest cmdlet upload di un file come multipart/form-data invio. Il file c:\document.txt viene inviato come campo document modulo con l'oggetto Content-Type di text/plain.

$FilePath = 'c:\document.txt'
$FieldName = 'document'
$ContentType = 'text/plain'

$FileStream = [System.IO.FileStream]::new($filePath, [System.IO.FileMode]::Open)
$FileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new('form-data')
$FileHeader.Name = $FieldName
$FileHeader.FileName = Split-Path -leaf $FilePath
$FileContent = [System.Net.Http.StreamContent]::new($FileStream)
$FileContent.Headers.ContentDisposition = $FileHeader
$FileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse($ContentType)

$MultipartContent = [System.Net.Http.MultipartFormDataContent]::new()
$MultipartContent.Add($FileContent)

$Response = Invoke-WebRequest -Body $MultipartContent -Method 'POST' -Uri 'https://api.contoso.com/upload'

Esempio 6: Invio semplificato di dati multipart/form-data

Alcune API richiedono multipart/form-data l'invio di file e contenuti misti. In questo esempio viene illustrato l'aggiornamento di un profilo utente.

$Uri = 'https://api.contoso.com/v2/profile'
$Form = @{
    firstName  = 'John'
    lastName   = 'Doe'
    email      = 'john.doe@contoso.com'
    avatar     = Get-Item -Path 'c:\Pictures\jdoe.png'
    birthday   = '1980-10-15'
    hobbies    = 'Hiking','Fishing','Jogging'
}
$Result = Invoke-WebRequest -Uri $Uri -Method Post -Form $Form

Il modulo del profilo richiede i campi seguenti: firstName, lastNameemail, , avatarbirthday, e hobbies. L'API prevede l'inserimento di un'immagine per l'immagine del profilo utente nel avatar campo. L'API accetta anche più hobbies voci da inviare nello stesso modulo.

Quando si crea HashTable $Form , i nomi delle chiavi vengono usati come nomi di campo modulo. Per impostazione predefinita, i valori di HashTable vengono convertiti in stringhe. Se è presente un valore System.IO.FileInfo , il contenuto del file viene inviato. Se sono presenti raccolte come matrici o elenchi, il campo modulo viene inviato più volte.

Usando Get-Item sulla avatar chiave, l'oggetto FileInfo viene impostato come valore. Il risultato è che i dati dell'immagine per jdoe.png vengono inviati.

Fornendo un elenco alla hobbies chiave, il hobbies campo è presente negli invii una volta per ogni voce di elenco.

Esempio 7: Intercettare messaggi non riusciti da Invoke-WebRequest

Quando Invoke-WebRequest rileva un messaggio HTTP non riuscito (404, 500 e così via), non restituisce alcun output e genera un errore irreversibile. Per rilevare l'errore e visualizzare StatusCode, è possibile racchiudere l'esecuzione in un try/catch blocco.

try
{
    $Response = Invoke-WebRequest -Uri "www.microsoft.com/unkownhost"
    # This will only execute if the Invoke-WebRequest is successful.
    $StatusCode = $Response.StatusCode
} catch {
    $StatusCode = $_.Exception.Response.StatusCode.value__
}
$StatusCode

404

L'errore irreversibile viene intercettato dal catch blocco , che recupera statusCode dall'oggetto Exception .

Esempio 8: Scaricare più file contemporaneamente

Il Invoke-WebRequest cmdlet può scaricare un solo file alla volta. Nell'esempio seguente viene Start-ThreadJob usato per creare più processi di thread per scaricare più file contemporaneamente.

$baseUri = 'https://github.com/PowerShell/PowerShell/releases/download'
$files = @(
    @{
        Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.msi"
        OutFile = 'PowerShell-7.3.0-preview.5-win-x64.msi'
    },
    @{
        Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.zip"
        OutFile = 'PowerShell-7.3.0-preview.5-win-x64.zip'
    },
    @{
        Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.msi"
        OutFile = 'PowerShell-7.2.5-win-x64.msi'
    },
    @{
        Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.zip"
        OutFile = 'PowerShell-7.2.5-win-x64.zip'
    }
)

$jobs = @()

foreach ($file in $files) {
    $jobs += Start-ThreadJob -Name $file.OutFile -ScriptBlock {
        $params = $using:file
        Invoke-WebRequest @params
    }
}

Write-Host "Downloads started..."
Wait-Job -Job $jobs

foreach ($job in $jobs) {
    Receive-Job -Job $job
}

Esempio 9: ignorare la convalida dell'intestazione

Per impostazione predefinita, il Invoke-WebRequest cmdlet convalida i valori delle intestazioni note con un formato di valore definito dagli standard. Nell'esempio seguente viene illustrato come questa convalida può generare un errore e come usare il parametro SkipHeaderValidation per evitare la convalida dei valori per gli endpoint che tollerano valori formattati in modo non valido.

$Uri = 'https://httpbin.org/headers'
$InvalidHeaders = @{
    'If-Match' = '12345'
}

Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders

Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders -SkipHeaderValidation

Invoke-WebRequest: The format of value '12345' is invalid.

StatusCode        : 200
StatusDescription : OK
Content           : {
                      "headers": {
                        "Host": "httpbin.org",
                        "If-Match": "12345",
                        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.19044; en-US) PowerShell/7.2.5",
                        "X-Amzn-Trace-Id": �
RawContent        : HTTP/1.1 200 OK
                    Date: Mon, 08 Aug 2022 16:24:24 GMT
                    Connection: keep-alive
                    Server: gunicorn/19.9.0
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Type: application�
Headers           : {[Date, System.String[]], [Connection, System.String[]], [Server, System.String[]], [Access-Control-Allow-Origin, System.String[]]�}
Images            : {}
InputFields       : {}
Links             : {}
RawContentLength  : 249
RelationLink      : {}

httpbin.org è un servizio che restituisce informazioni sulle richieste Web e le risposte per la risoluzione dei problemi. La $Uri variabile viene assegnata all'endpoint /headers del servizio, che restituisce le intestazioni di una richiesta come contenuto nella risposta.

L'intestazione If-Match della richiesta è definita nella sezione RFC-7232 3.1 e richiede che il valore per tale intestazione venga definito con le virgolette circostanti. Alla $InvalidHeaders variabile viene assegnata una tabella hash in cui il valore di If-Match non è valido perché è definito come 12345 anziché "12345".

La chiamata Invoke-WebRequest con le intestazioni non valide restituisce una segnalazione errori che indica che il valore formattato non è valido. La richiesta non viene inviata all'endpoint.

La chiamata Invoke-WebRequest con il parametro SkipHeaderValidation ignora l'errore di convalida e invia la richiesta all'endpoint. Poiché l'endpoint tollera valori di intestazione non conformi, il cmdlet restituisce l'oggetto risposta senza errori.

Esempio 10: Inviare una richiesta con HTTP 2.0

Questo esempio ottiene i collegamenti in una pagina Web usando il protocollo HTTP 2.0. Usa il Invoke-WebRequest cmdlet per ottenere il contenuto della pagina Web. Usa quindi la proprietà Links di BasicHtmlWebResponseObject che Invoke-WebRequest restituisce e la proprietà Href di ogni collegamento.

(Invoke-WebRequest -Uri 'https://aka.ms/pscore6-docs' -HttpVersion 2.0).Links.Href

Esempio 11: Inviare una richiesta a un'applicazione socket Unix

Alcune applicazioni, ad esempio Docker, espongono un socket Unix per la comunicazione. Questo esempio esegue una query per un elenco di immagini Docker usando l'API Docker. Il cmdlet si connette al daemon Docker usando il socket Unix.

Invoke-WebRequest -Uri "http://localhost/v1.40/images/json/" -UnixSocket "/var/run/docker.sock"

Parametri

-AllowInsecureRedirect

Consente il reindirizzamento da HTTPS a HTTP. Per impostazione predefinita, qualsiasi richiesta reindirizzata da HTTPS a HTTP genera un errore e la richiesta viene interrotta per impedire la comunicazione involontaria in testo normale su connessioni non crittografate. Per eseguire l'override di questo comportamento a proprio rischio, usare il parametro AllowInsecureRedirect .

Questo parametro è stato aggiunto in PowerShell 7.4.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-AllowUnencryptedAuthentication

Consente l'invio di credenziali e segreti su connessioni non crittografate. Per impostazione predefinita, fornire credenziali o qualsiasi opzione di autenticazione con un URI che non inizia con https:// genera un errore e la richiesta viene interrotta per impedire la comunicazione involontaria dei segreti in testo normale su connessioni non crittografate. Per eseguire l'override di questo comportamento a proprio rischio, specificare il parametro AllowUnencryptedAuthentication .

Avviso

L'uso di questo parametro non è sicuro e non è consigliato. Viene fornito solo per compatibilità con i sistemi legacy che non possono fornire connessioni crittografate. Usare a proprio rischio.

Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Authentication

Specifica il tipo di autenticazione esplicito da utilizzare per la richiesta. L'impostazione predefinita è None (Nessuna). Il parametro Authentication non può essere usato con il parametro UseDefaultCredentials .

Opzioni di autenticazione disponibili:

  • None: questa è l'opzione predefinita quando non viene specificata l'autenticazione . Non viene usata alcuna autenticazione esplicita.
  • Basic: richiede credenziali. Le credenziali vengono inviate come intestazione RFC 7617 Basic Authentication Authorization: Basic nel formato di base64(user:password).
  • Bearer: richiede il parametro Token . Invia un'intestazione RFC 6750 Authorization: Bearer con il token fornito.
  • OAuth: richiede il parametro Token . Invia un'intestazione RFC 6750 Authorization: Bearer con il token fornito.

L'opzione Autenticazione esegue l'override di tutte Authorization le intestazioni fornite alle intestazioni o incluse in WebSession.

Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:WebAuthenticationType
Valori accettati:None, Basic, Bearer, OAuth
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Body

Specifica il corpo della richiesta. Il corpo corrisponde al contenuto della richiesta che segue le intestazioni. È anche possibile inviare tramite pipe un valore del corpo a Invoke-WebRequest.

Il parametro Body può essere usato per specificare un elenco di parametri di query o specificare il contenuto della risposta. Per i parametri di query, il cmdlet usa il metodo System.Net.WebUtility.UrlEncode per codificare le coppie chiave-valore. Per altre informazioni sulle stringhe di codifica per gli URL, vedere le informazioni di riferimento sul metodo UrlEncode().

Quando l'input è una richiesta POST e il corpo è string, il valore a sinistra del primo segno di uguale (=) viene impostato come chiave nei dati del modulo e il testo rimanente viene impostato come valore. Per specificare più chiavi, usare un oggetto IDictionary, ad esempio una tabella hash, per Body.

Quando l'input è una richiesta GET e il corpo è un IDictionary (in genere, una tabella hash), il corpo viene aggiunto all'URI come parametri di query. Per altri tipi di richiesta , ad esempio PATCH, il corpo viene impostato come valore del corpo della richiesta nel formato standard name=value con i valori con codifica URL.

Quando l'input è un oggetto System.Xml.XmlNode e la dichiarazione XML specifica una codifica, tale codifica viene utilizzata per i dati nella richiesta, a meno che non venga sottoposto a override dal parametro ContentType .

Il parametro Body accetta anche un System.Net.Http.MultipartFormDataContent oggetto . Ciò facilita le multipart/form-data richieste. Quando viene fornito un oggetto MultipartFormDataContent per Body, tutte le intestazioni correlate al contenuto fornite ai parametri ContentType, Headers o WebSession vengono sostituite dalle intestazioni Content dell'oggetto MultipartFormDataContent . Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:Object
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:True
Accettare caratteri jolly:False

-Certificate

Specifica il certificato client usato per una richiesta Web sicura. Immettere una variabile che contiene un certificato oppure un comando o un'espressione che ottiene il certificato.

Per trovare un certificato, usare Get-PfxCertificate o usare il Get-ChildItem cmdlet nell'unità Certificato (Cert:). Se il certificato non è valido o non dispone di un'autorità sufficiente, il comando ha esito negativo.

Tipo:X509Certificate
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-CertificateThumbprint

Specifica il certificato di chiave pubblica digitale (X509) di un account utente con autorizzazione per l'invio della richiesta. Immettere l'identificazione personale del certificato.

I certificati vengono usati nell'autenticazione basata sui certificati client. I certificati possono essere mappati solo agli account utente locali, non agli account di dominio.

Per visualizzare l'identificazione personale del certificato, usare il Get-Item comando o Get-ChildItem per trovare il certificato in Cert:\CurrentUser\My.

Nota

Questa funzionalità è supportata solo nelle piattaforme del sistema operativo Windows.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ConnectionTimeoutSeconds

Specifica per quanto tempo la richiesta può essere in sospeso prima del timeout. Immettere un valore in secondi. Il valore predefinito, 0, specifica un timeout indefinito.

La restituzione o il timeout di una query DNS (Domain Name System) può richiedere fino a 15 secondi. Se la richiesta contiene un nome host che richiede la risoluzione e si imposta ConnectionTimeoutSeconds su un valore maggiore di zero, ma meno di 15 secondi, l'operazione può richiedere 15 secondi o più prima che venga generata un'eccezione WebException e il timeout della richiesta.

Questo parametro ha sostituito il parametro TimeoutSec in PowerShell 7.4. È possibile usare TimeoutSec come alias per ConnectionTimeoutSeconds.

Tipo:Int32
Alias:TimeoutSec
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ContentType

Specifica il tipo di contenuto della richiesta Web.

Se il valore di ContentType contiene il formato di codifica (come charset), il cmdlet usa tale formato per codificare il corpo della richiesta Web. Se ContentType non specifica un formato di codifica, viene invece usato il formato di codifica predefinito. Un esempio di ContentType con un formato di codifica è text/plain; charset=iso-8859-5, che specifica l'alfabeto latino/cirillico.

Se questo parametro viene omesso e il metodo di richiesta è POST o PUT, Invoke-WebRequest imposta il tipo di contenuto su application/x-www-form-urlencoded. In caso contrario, il tipo di contenuto non viene specificato nella chiamata.

ContentType viene sottoposto a override quando viene fornito un oggetto MultipartFormDataContent per Body.

A partire da PowerShell 7.4, se si usa questo parametro e il parametro Headers per definire l'intestazione Content-Type , viene usato il valore specificato nel parametro ContentType .

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Credential

Specifica un account utente che dispone dell'autorizzazione per l'invio della richiesta. Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential generato dal Get-Credential cmdlet.

Le credenziali possono essere usate da sole o in combinazione con determinate opzioni di parametro di autenticazione . Se usato da solo, fornisce le credenziali al server remoto solo se il server remoto invia una richiesta di verifica di autenticazione. Se usato con le opzioni di autenticazione , le credenziali vengono inviate in modo esplicito.

Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.

Nota

Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.

Tipo:PSCredential
Posizione:Named
Valore predefinito:Current user
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-CustomMethod

Specifica un metodo personalizzato utilizzato per la richiesta Web. Questa opzione può essere usata se il metodo di richiesta richiesto dall'endpoint non è un'opzione disponibile nel metodo . Il metodo e CustomMethod non possono essere usati insieme.

Questo esempio effettua una TEST richiesta HTTP all'API:

Invoke-WebRequest -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'

Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:String
Alias:CM
Posizione:Named
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-DisableKeepAlive

Indica che il cmdlet imposta il valore KeepAlive nell'intestazione HTTP su False. Per impostazione predefinita, KeepAlive è True. KeepAlive stabilisce una connessione permanente al server per facilitare le richieste successive.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Form

Converte un dizionario in un multipart/form-data invio. Il modulo non può essere utilizzato con Body. Se viene usato ContentType , viene ignorato.

Le chiavi del dizionario vengono utilizzate come nomi di campo del modulo. Per impostazione predefinita, i valori del modulo vengono convertiti in valori stringa.

Se il valore è un oggetto System.IO.FileInfo , il contenuto del file binario viene inviato. Il nome del file viene inviato come proprietà filename . Il tipo MIME è impostato su application/octet-stream. Get-Item può essere usato per semplificare la fornitura dell'oggetto System.IO.FileInfo .

$Form = @{ resume = Get-Item 'c:\Users\jdoe\Documents\John Doe.pdf' }

Se il valore è un tipo di raccolta, ad esempio Matrici o Elenchi, il campo per viene inviato più volte. I valori dell'elenco vengono considerati come stringhe per impostazione predefinita. Se il valore è un oggetto System.IO.FileInfo , il contenuto del file binario viene inviato. Le raccolte annidate non sono supportate.

$Form = @{ tags = 'Vacation', 'Italy', '2017' pictures = Get-ChildItem 'c:\Users\jdoe\Pictures\2017-Italy' }

Nell'esempio precedente il tags campo viene fornito tre volte nel modulo, una volta per ognuno di Vacation, Italye 2017. Il pictures campo viene inoltre inviato una volta per ogni file nella 2017-Italy cartella . Il contenuto binario dei file in tale cartella viene inviato come valori.

Questa funzionalità è stata aggiunta in PowerShell 6.1.0.

Tipo:IDictionary
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Headers

Specifica le intestazioni della richiesta Web. Immettere una tabella hash o un dizionario.

Le intestazioni correlate al contenuto, ad esempio Content-Type vengono sottoposte a override quando viene fornito un oggetto MultipartFormDataContent per Body.

A partire da PowerShell 7.4, se si usa questo parametro per definire l'intestazione e usare il parametro ContentType, viene usato il valore specificato nel parametro ContentType.Content-Type

Tipo:IDictionary
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-HttpVersion

Specifica la versione HTTP usata per la richiesta. Il valore predefinito è 1.1.

I valori validi sono:

  • 1.0
  • 1.1
  • 2.0
  • 3.0
Tipo:Version
Posizione:Named
Valore predefinito:1.1
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-InFile

Ottiene il contenuto della richiesta Web da un file. Immettere un percorso e un nome file. Se si omette il percorso, l'impostazione predefinita è il percorso corrente.

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-MaximumRedirection

Specifica quante volte PowerShell reindirizza una connessione a un URI (Uniform Resource Identifier) alternativo prima che la connessione non riesca. Il valore predefinito è 5. Il valore 0 (zero) impedisce qualsiasi reindirizzamento.

Tipo:Int32
Posizione:Named
Valore predefinito:5
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-MaximumRetryCount

Specifica quante volte PowerShell ritenta una connessione quando viene ricevuto un codice di errore compreso tra 400 e 599 inclusi o 304. Vedere anche Il parametro RetryIntervalSec per specificare il numero di tentativi.

Tipo:Int32
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Method

Specifica il metodo usato per la richiesta Web. I valori validi per questo parametro sono:

  • Default
  • Delete
  • Get
  • Head
  • Merge
  • Options
  • Patch
  • Post
  • Put
  • Trace

Il parametro CustomMethod può essere usato per i metodi di richiesta non elencati in precedenza.

Tipo:WebRequestMethod
Valori accettati:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-NoProxy

Indica che il cmdlet non deve usare un proxy per raggiungere la destinazione. Quando è necessario ignorare il proxy configurato nell'ambiente, usare questa opzione. Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-OperationTimeoutSeconds

Questo timeout si applica ai dati letti all'interno di un flusso, non al tempo di flusso nel suo complesso. Il valore predefinito, 0, specifica un timeout indefinito.

L'impostazione del valore su 30 secondi indica che qualsiasi ritardo di più di 30 secondi tra i dati nel flusso termina la richiesta. Un file di grandi dimensioni che richiede diversi minuti per il download non terminerà a meno che il flusso non si blocchi per più di 30 secondi.

Tipo:Int32
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-OutFile

Per impostazione predefinita, Invoke-WebRequest restituisce i risultati alla pipeline. Quando si usa il parametro OutFile , i risultati vengono salvati nel file specificato e non restituiti alla pipeline. Immettere un percorso e un nome file. Per inviare i risultati a un file e alla pipeline, aggiungere il parametro Passthru .

Se si omette il percorso, l'impostazione predefinita è il percorso corrente. Il nome viene considerato come percorso letterale. I nomi contenenti parentesi quadre ([]) devono essere racchiusi tra virgolette singole (').

A partire da PowerShell 7.4, è possibile specificare un percorso di cartella senza il nome file. Quando si esegue questa operazione, il comando usa il nome file dell'ultimo segmento dell'URI risolto dopo qualsiasi reindirizzamento. Quando si specifica un percorso di cartella per OutFile, non è possibile usare il parametro Resume .

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-PassThru

Indica che il cmdlet restituisce i risultati, oltre a scriverli in un file. Questo parametro è valido solo quando il parametro OutFile viene usato anche nel comando .

Nota

Quando si usa il parametro PassThru , l'output viene scritto nella pipeline, ma il file non viene creato. Questo problema è stato risolto in PowerShell 7.5-preview.4. Per altre informazioni, vedere Problema di PowerShell n. 15409.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-PreserveAuthorizationOnRedirect

Indica che il cmdlet deve mantenere l'intestazione Authorization , se presente, tra reindirizzamenti.

Per impostazione predefinita, il cmdlet rimuove l'intestazione prima del Authorization reindirizzamento. Se si specifica questo parametro, questa logica viene disabilitata per i casi in cui l'intestazione deve essere inviata al percorso di reindirizzamento.

Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-PreserveHttpMethodOnRedirect

Indica che il cmdlet deve mantenere il metodo della richiesta tra reindirizzamenti.

Per impostazione predefinita, il cmdlet modifica il metodo in GET quando viene reindirizzato. Se si specifica questo parametro, questa logica viene disabilitata per assicurarsi che il metodo previsto possa essere usato con il reindirizzamento.

Questa funzionalità è stata aggiunta in PowerShell 7.4.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Proxy

Specifica un server proxy per la richiesta, anziché connettersi direttamente alla risorsa Internet. Immettere l'URI di un server proxy di rete.

Tipo:Uri
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ProxyCredential

Specifica un account utente autorizzato a usare il server proxy specificato dal parametro Proxy . Il valore predefinito è l'utente corrente.

Digitare un nome utente, ad esempio User01 o Domain01\User01, o immettere un oggetto PSCredential , ad esempio quello generato dal Get-Credential cmdlet .

Questo parametro è valido solo quando il parametro Proxy viene usato anche nel comando . Non è possibile usare i parametri ProxyCredential e ProxyUseDefaultCredentials nello stesso comando.

Tipo:PSCredential
Posizione:Named
Valore predefinito:Current user
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-ProxyUseDefaultCredentials

Indica che il cmdlet usa le credenziali dell'utente corrente per accedere al server proxy specificato dal parametro Proxy .

Questo parametro è valido solo quando il parametro Proxy viene usato anche nel comando . Non è possibile usare i parametri ProxyCredential e ProxyUseDefaultCredentials nello stesso comando.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Resume

Esegue un tentativo di lavoro ottimale per riprendere il download di un file parziale. Resume richiede OutFile.

Resume opera solo sulle dimensioni del file locale e del file remoto e non esegue altre convalide che il file locale e il file remoto siano uguali.

Se le dimensioni del file locale sono inferiori alle dimensioni del file remoto, il cmdlet tenta di riprendere il download del file e di accodare i byte rimanenti alla fine del file.

Se le dimensioni del file locale corrispondono alle dimensioni del file remoto, non viene eseguita alcuna azione e il cmdlet presuppone che il download sia già stato completato.

Se le dimensioni del file locale sono maggiori delle dimensioni del file remoto, il file locale viene sovrascritto e l'intero file remoto viene scaricato nuovamente. Questo comportamento equivale all'uso di OutFile senza Resume.

Se il server remoto non supporta la ripresa del download, il file locale viene sovrascritto e l'intero file remoto viene scaricato nuovamente. Questo comportamento equivale all'uso di OutFile senza Resume.

Se il file locale non esiste, viene creato il file locale e viene scaricato l'intero file remoto. Questo comportamento equivale all'uso di OutFile senza Resume.

Questa funzionalità è stata aggiunta in PowerShell 6.1.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-RetryIntervalSec

Specifica l'intervallo tra i tentativi di connessione quando viene ricevuto un codice di errore compreso tra 400 e 599 inclusi o 304. Vedere anche Parametro MaximumRetryCount per specificare il numero di tentativi. Il valore deve essere compreso tra 1 e [int]::MaxValue.

Quando il codice di errore è 429 e la risposta include la proprietà Retry-After nelle relative intestazioni, il cmdlet usa tale valore per l'intervallo di ripetizione dei tentativi, anche se questo parametro è specificato.

Tipo:Int32
Posizione:Named
Valore predefinito:5
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-SessionVariable

Specifica una variabile per cui questo cmdlet crea una sessione di richiesta Web e la salva nel valore . Immettere un nome di variabile senza il simbolo del dollaro ($).

Quando si specifica una variabile di sessione, Invoke-WebRequest crea un oggetto sessione di richiesta Web e lo assegna a una variabile con il nome specificato nella sessione di PowerShell. È possibile usare la variabile nella sessione appena il comando termina l'esecuzione.

Prima di PowerShell 7.4, la sessione di richiesta Web non è una connessione permanente. Si tratta di un oggetto che contiene informazioni sulla connessione e sulla richiesta, inclusi cookie, credenziali, il valore massimo di reindirizzamento e la stringa dell'agente utente. È possibile usarlo per condividere lo stato e i dati tra le richieste Web.

A partire da PowerShell 7.4, la sessione di richiesta Web è persistente, purché le proprietà della sessione non vengano sottoposte a override in una richiesta successiva. Quando sono, il cmdlet ricrea la sessione con i nuovi valori. Le sessioni persistenti riducono il sovraccarico per le richieste ripetute, rendendole molto più veloci.

Per usare la sessione di richiesta Web nelle richieste Web successive, specificare la variabile di sessione nel valore del parametro WebSession . PowerShell usa i dati nell'oggetto sessione di richiesta Web quando si stabilisce la nuova connessione. Per eseguire l'override di un valore nella sessione di richiesta Web, usare un parametro cmdlet, ad esempio UserAgent o Credential. I valori di parametro hanno la precedenza sui valori nella sessione di richieste Web.

Non è possibile usare i parametri SessionVariable e WebSession nello stesso comando.

Tipo:String
Alias:SV
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-SkipCertificateCheck

Ignora i controlli di convalida dei certificati. Sono incluse tutte le convalide, ad esempio scadenza, revoca, autorità radice attendibile e così via.

Avviso

L'uso di questo parametro non è sicuro e non è consigliato. Questa opzione deve essere usata solo per gli host noti usando un certificato autofirmato a scopo di test. Usare a proprio rischio.

Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-SkipHeaderValidation

Indica che il cmdlet deve aggiungere intestazioni alla richiesta senza convalida.

Questa opzione deve essere usata per i siti che richiedono valori di intestazione non conformi agli standard. Se si specifica questa opzione, la convalida viene disabilitata per consentire il passaggio del valore deselezionato. Se specificato, tutte le intestazioni vengono aggiunte senza convalida.

Questa opzione disabilita la convalida per i valori passati ai parametri ContentType, Headers e UserAgent .

Questa funzionalità è stata aggiunta in PowerShell 6.0.0.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-SkipHttpErrorCheck

Questo parametro fa sì che il cmdlet ignori gli stati di errore HTTP e continui a elaborare le risposte. Le risposte di errore vengono scritte nella pipeline esattamente come se avessero esito positivo.

Questo parametro è stato introdotto in PowerShell 7.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-SslProtocol

Imposta i protocolli SSL/TLS consentiti per la richiesta Web. Per impostazione predefinita, tutti i protocolli SSL/TLS supportati dal sistema sono consentiti. SslProtocol consente di limitare protocolli specifici a scopo di conformità.

Questi valori sono definiti come enumerazione basata su flag. È possibile combinare più valori per impostare più flag usando questo parametro. I valori possono essere passati al parametro SslProtocol come matrice di valori o come stringa delimitata da virgole di tali valori. Il cmdlet combina i valori usando un'operazione binary-OR. Il passaggio di valori come matrice è l'opzione più semplice e consente anche di usare il completamento tramite tabulazione sui valori. Potrebbe non essere possibile definire più opzioni in tutte le piattaforme.

Nota

Nelle piattaforme non Windows potrebbe non essere possibile fornire Tls o Tls12 come opzione. Il supporto per Tls13 non è disponibile in tutti i sistemi operativi e deve essere verificato in base al sistema operativo.

Questa funzionalità è stata aggiunta in PowerShell 6.0.0 e il supporto per Tls13 è stato aggiunto in PowerShell 7.1.

Tipo:WebSslProtocol
Valori accettati:Default, Tls, Tls11, Tls12
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Token

Token OAuth o Bearer da includere nella richiesta. Il token è richiesto da determinate opzioni di autenticazione . Non può essere usato in modo indipendente.

Il token accetta un SecureString oggetto contenente il token. Per fornire il token manualmente, usare quanto segue:

Invoke-WebRequest -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)

Questo parametro è stato introdotto in PowerShell 6.0.

Tipo:SecureString
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-TransferEncoding

Specifica un valore per l'intestazione della risposta HTTP con codifica di trasferimento. I valori validi per questo parametro sono:

  • Chunked
  • Compress
  • Deflate
  • GZip
  • Identity
Tipo:String
Valori accettati:chunked, compress, deflate, gzip, identity
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-UnixSocket

Specifica il nome del socket Unix a cui connettersi. Questo parametro è supportato nei sistemi basati su Unix e Windows versione 1803 e successive. Per altre informazioni sul supporto di Windows dei socket Unix, vedere il post di blog Sull'interoperabilità di Windows/WSL con AF_UNIX.

Questo parametro è stato aggiunto in PowerShell 7.4.

Tipo:UnixDomainSocketEndPoint
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Uri

Specifica l'URI (Uniform Resource Identifier) della risorsa Internet a cui viene inviata la richiesta Web. Immettere un URI. Questo parametro supporta solo HTTP o HTTPS.

Questo parametro è obbligatorio. Il nome del parametro Uri è facoltativo.

Tipo:Uri
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-UseBasicParsing

Questo parametro è stato deprecato. A partire da PowerShell 6.0.0, tutte le richieste Web usano solo l'analisi di base. Questo parametro è incluso solo per la compatibilità con le versioni precedenti e qualsiasi uso di esso non ha alcun effetto sull'operazione del cmdlet.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-UseDefaultCredentials

Indica che il cmdlet usa le credenziali dell'utente corrente per inviare la richiesta Web. Questo non può essere usato con l'autenticazione o le credenziali e potrebbe non essere supportato in tutte le piattaforme.

Tipo:SwitchParameter
Posizione:Named
Valore predefinito:False
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-UserAgent

Specifica una stringa agente utente per la richiesta Web.

L'agente utente predefinito è simile a Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 con lievi variazioni per ogni sistema operativo e piattaforma.

Per testare un sito Web con la stringa dell'agente utente standard usata dalla maggior parte dei browser Internet, usare le proprietà della classe PSUserAgent , ad esempio Chrome, FireFox, InternetExplorer, Opera e Safari.

Ad esempio, il comando seguente usa la stringa dell'agente utente per Internet Explorer: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)

Tipo:String
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-WebSession

Specifica una sessione di richieste Web. Immettere il nome della variabile, incluso il segno di dollaro ($).

Per eseguire l'override di un valore nella sessione di richiesta Web, usare un parametro cmdlet, ad esempio UserAgent o Credential. I valori di parametro hanno la precedenza sui valori nella sessione di richieste Web. Anche le intestazioni correlate al contenuto, ad esempio Content-Type, vengono sottoposte a override quando viene fornito un oggetto MultipartFormDataContent per Body.

A differenza di una sessione remota, la sessione di richiesta Web non è una connessione permanente. Si tratta di un oggetto che contiene informazioni sulla connessione e sulla richiesta, inclusi cookie, credenziali, il valore massimo di reindirizzamento e la stringa dell'agente utente. È possibile usarlo per condividere lo stato e i dati tra le richieste Web.

Per creare una sessione di richiesta Web, immettere un nome di variabile, senza un segno di dollaro, nel valore del parametro SessionVariable di un Invoke-WebRequest comando. Invoke-WebRequest crea la sessione e la salva nella variabile . Nei comandi successivi usare la variabile come valore del parametro WebSession .

Non è possibile usare i parametri SessionVariable e WebSession nello stesso comando.

Tipo:WebRequestSession
Posizione:Named
Valore predefinito:None
Necessario:False
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

Input

Object

È possibile inviare tramite pipe il corpo di una richiesta Web a questo cmdlet.

Output

BasicHtmlWebResponseObject

Questo cmdlet restituisce l'oggetto risposta che rappresenta il risultato della richiesta Web.

Note

PowerShell include gli alias seguenti per Invoke-WebRequest:

  • Tutte le piattaforme:
    • iwr

A partire da PowerShell 6.0.0 Invoke-WebRequest supporta solo l'analisi di base.

Per altre informazioni, vedere BasicHtmlWebResponseObject.

A causa delle modifiche apportate a .NET Core 3.1, PowerShell 7.0 e versioni successive usano la proprietà HttpClient.DefaultProxy per determinare la configurazione del proxy.

Il valore di questa proprietà è determinato dalla piattaforma:

  • Per Windows: legge la configurazione del proxy dalle variabili di ambiente. Se tali variabili non sono definite, la proprietà viene derivata dalle impostazioni proxy dell'utente.
  • Per macOS: legge la configurazione del proxy dalle variabili di ambiente. Se tali variabili non sono definite, la proprietà viene derivata dalle impostazioni proxy del sistema.
  • Per Linux: legge la configurazione del proxy dalle variabili di ambiente. Se tali variabili non sono definite, la proprietà inizializza un'istanza non configurata che ignora tutti gli indirizzi.

Le variabili di ambiente usate per l'inizializzazione di DefaultProxy nelle piattaforme basate su Windows e Unix sono le seguenti:

  • HTTP_PROXY: nome host o indirizzo IP del server proxy usato nelle richieste HTTP.
  • HTTPS_PROXY: nome host o indirizzo IP del server proxy usato nelle richieste HTTPS.
  • ALL_PROXY: il nome host o l'indirizzo IP del server proxy usato nelle richieste HTTP e HTTPS nel caso HTTP_PROXY o HTTPS_PROXY non siano definiti.
  • NO_PROXY: elenco delimitato da virgole di nomi host che devono essere esclusi dal proxy.

PowerShell 7.4 ha aggiunto il supporto per l'algoritmo di compressione Brotli.