Invoke-WebRequest

Obtient le contenu d’une page web sur Internet.

Syntaxe

StandardMethod (Par défaut)

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

StandardMethodNoProxy

Invoke-WebRequest
    [-Uri] <Uri>
    -NoProxy
    [-UseBasicParsing]
    [-WebSession <WebRequestSession>]
    [-SessionVariable <String>]
    [-AllowUnencryptedAuthentication]
    [-Authentication <WebAuthenticationType>]
    [-Credential <PSCredential>]
    [-UseDefaultCredentials]
    [-CertificateThumbprint <String>]
    [-Certificate <X509Certificate>]
    [-SkipCertificateCheck]
    [-SslProtocol <WebSslProtocol>]
    [-Token <SecureString>]
    [-UserAgent <String>]
    [-DisableKeepAlive]
    [-TimeoutSec <Int32>]
    [-Headers <IDictionary>]
    [-MaximumRedirection <Int32>]
    [-MaximumRetryCount <Int32>]
    [-RetryIntervalSec <Int32>]
    [-Method <WebRequestMethod>]
    [-Body <Object>]
    [-Form <IDictionary>]
    [-ContentType <String>]
    [-TransferEncoding <String>]
    [-InFile <String>]
    [-OutFile <String>]
    [-PassThru]
    [-Resume]
    [-SkipHttpErrorCheck]
    [-PreserveAuthorizationOnRedirect]
    [-SkipHeaderValidation]
    [<CommonParameters>]

CustomMethod

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

CustomMethodNoProxy

Invoke-WebRequest
    [-Uri] <Uri>
    -CustomMethod <String>
    -NoProxy
    [-UseBasicParsing]
    [-WebSession <WebRequestSession>]
    [-SessionVariable <String>]
    [-AllowUnencryptedAuthentication]
    [-Authentication <WebAuthenticationType>]
    [-Credential <PSCredential>]
    [-UseDefaultCredentials]
    [-CertificateThumbprint <String>]
    [-Certificate <X509Certificate>]
    [-SkipCertificateCheck]
    [-SslProtocol <WebSslProtocol>]
    [-Token <SecureString>]
    [-UserAgent <String>]
    [-DisableKeepAlive]
    [-TimeoutSec <Int32>]
    [-Headers <IDictionary>]
    [-MaximumRedirection <Int32>]
    [-MaximumRetryCount <Int32>]
    [-RetryIntervalSec <Int32>]
    [-Body <Object>]
    [-Form <IDictionary>]
    [-ContentType <String>]
    [-TransferEncoding <String>]
    [-InFile <String>]
    [-OutFile <String>]
    [-PassThru]
    [-Resume]
    [-SkipHttpErrorCheck]
    [-PreserveAuthorizationOnRedirect]
    [-SkipHeaderValidation]
    [<CommonParameters>]

Description

L’applet de commande Invoke-WebRequest envoie des requêtes HTTP et HTTPS à une page web ou un service web. Elle analyse la réponse et retourne des collections de liens, images et autres éléments HTML significatifs.

Cette applet de commande a été introduite dans PowerShell 3.0.

À compter de PowerShell 7.0, Invoke-WebRequest prend en charge la configuration du proxy définie par les variables d’environnement. Consultez la section Notes de cet article.

Important

Les exemples de cet article référencent les hôtes dans le domaine contoso.com. Il s’agit d’un domaine fictif utilisé par Microsoft pour des exemples. Les exemples sont conçus pour montrer comment utiliser les applets de commande. Cependant, comme les sites n’existent contoso.com pas, les exemples ne fonctionnent pas. Adaptez les exemples aux hôtes dans votre environnement.

Exemples

Exemple 1 : Envoyer une requête web

Cet exemple utilise l’applet de commande Invoke-WebRequest pour envoyer une requête web au site 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

La première commande émet la requête et enregistre la réponse dans la variable $Response.

La deuxième commande obtient n’importe quelle InputField où la propriété Name est semblable à "* Value". Les résultats filtrés sont redirigés vers Select-Object pour sélectionner les propriétés nom de et valeur.

Exemple 2 : Utiliser un service web avec état

Cet exemple montre comment utiliser l’applet de commande Invoke-WebRequest avec un service web avec état.

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

$Session

$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session

$ProfileResponse

Le premier appel à Invoke-WebRequest envoie une demande de connexion. La commande spécifie la valeur « Session » pour la valeur du paramètre -SessionVariable et enregistre le résultat dans la $LoginResponse variable. Une fois la commande terminée, la $LoginResponse variable contient un BasicHtmlWebResponseObject et la $Session variable contient un WebRequestSession objet. Cela journalise l’utilisateur dans le site.

L’appel à $Session affiche lui-même l’objet WebRequestSession dans la variable.

Le deuxième appel à Invoke-WebRequest récupère le profil de l’utilisateur, ce qui nécessite que l’utilisateur soit connecté au site. Les données de session stockées dans la $Session variable sont utilisées pour fournir des cookies de session au site créés lors de la connexion. Le résultat est enregistré dans la $ProfileResponse variable.

L’appel à $ProfileResponse par lui-même affiche le BasicHtmlWebResponseObject dans la variable.

Exemple 3 : Obtenir des liens à partir d’une page web

Cet exemple obtient les liens d’une page web. Il utilise l’applet de commande Invoke-WebRequest pour obtenir le contenu de la page web. Ensuite, il utilise la propriété Links de qui BasicHtmlWebResponseObjectInvoke-WebRequest retourne et la propriété Href de chaque lien.

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

Exemple 4 : Écrit le contenu de la réponse dans un fichier à l’aide de l’encodage défini dans la page demandée.

Cet exemple utilise l’applet de commande Invoke-WebRequest pour récupérer le contenu de la page web d’une page de documentation 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()
}

La première commande récupère la page et enregistre l’objet de réponse dans la variable $Response.

La deuxième commande crée un StreamWriter à utiliser pour écrire le contenu de la réponse dans un fichier. La propriété Encoding de l’objet réponse est utilisée pour définir l’encodage du fichier.

Les dernières commandes écrivent la propriété Content dans le fichier, puis éliminent la StreamWriterpropriété .

Notez que la propriété Encoding est null si la requête web ne retourne pas de contenu texte.

Exemple 5 : Envoyer un fichier multipart/form-data

Cet exemple utilise l’applet de commande Invoke-WebRequest charger un fichier en tant que soumission multipart/form-data. Le fichier c:\document.txt est envoyé en tant que champ de formulaire document avec le Content-Type de 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'

Exemple 6 : Envoi à plusieurs parties/Form-Data simplifié

Certaines API nécessitent la procédure multipart/form-data pour téléverser des fichiers et du contenu mixte. Cet exemple illustre la mise à jour d’un profil utilisateur.

$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

Le formulaire de profil nécessite ces champs : firstName, lastName, email, avatar, birthdayet hobbies. L’API s’attend à ce que l’image du profil utilisateur soit fournie dans le champ avatar. L’API accepte également plusieurs entrées hobbies à soumettre dans le même formulaire.

Lors de la création de la table de hachage $Form, les noms de clés sont utilisés comme noms de champs de formulaire. Par défaut, les valeurs du hashTable sont converties en chaînes. Si une valeur System.IO.FileInfo est présente, le contenu du fichier est envoyé. Si une collection telle que des tableaux ou des listes est présente, le champ de formulaire est envoyé plusieurs fois.

En utilisant Get-Item sur la clé avatar, l’objet FileInfo est défini comme valeur. Le résultat est que les données d’image pour jdoe.png sont envoyées.

En fournissant une liste à la clé hobbies, le champ hobbies est présent dans les soumissions une fois pour chaque élément de liste.

Exemple 7 : Intercepter les messages non réussis de Invoke-WebRequest

Lorsque Invoke-WebRequest rencontre un message HTTP non réussi (404, 500, etc.), il ne retourne aucune sortie et génère une erreur de fin. Pour intercepter l’erreur et afficher le StatusCode vous pouvez placer l’exécution dans un bloc try/catch.

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’erreur de fin est interceptée par le bloc catch, qui récupère le StatusCode à partir de l’objet Exception.

Paramètres

-AllowUnencryptedAuthentication

Permet l’envoi d’informations d’identification et de secrets sur des connexions non chiffrées. Par défaut, le fait de fournir des informations d’identification ou une option d’authentification avec un URI qui ne commence https:// pas par entraîne une erreur et la demande est abandonnée pour éviter la communication involontaire de secrets en texte brut via des connexions non chiffrées. Pour remplacer ce comportement à votre propre risque, fournissez le paramètre AllowUnencryptedAuthentication.

Avertissement

L’utilisation de ce paramètre n’est pas sécurisée et n’est pas recommandée. Il n’est fourni qu’à des fins de compatibilité avec les systèmes hérités qui ne peuvent pas fournir de connexions chiffrées. Utilisez-les à vos propres risques.

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Authentication

Spécifie le type d’authentification explicite à utiliser pour la demande. La valeur par défaut est None. Le paramètre Authentication ne peut pas être utilisé avec le paramètre UseDefaultCredentials.

Options d’authentification disponibles :

  • None: Il s’agit de l’option par défaut lorsque l’authentification n’est pas fournie. Aucune authentification explicite ne sera utilisée.
  • Basic: nécessite des informations d’identification . Les informations d’identification seront utilisées pour envoyer un en-tête d’authentification Authorization: Basic de base RFC 7617 au format .base64(user:password)
  • Bearer: nécessite le paramètre du jeton. Envoie un en-tête RFC 6750 Authorization: Bearer avec le jeton fourni.
  • OAuth: nécessite le paramètre du jeton. Envoie un en-tête RFC 6750 Authorization: Bearer avec le jeton fourni.

Fournir une option Authentication remplace tous les en-têtes Authorization fournis à Headers ou inclus dans WebSession.

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:WebAuthenticationType
Valeur par défaut:None
Valeurs acceptées:None, Basic, Bearer, OAuth
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Body

Spécifie le corps de la requête. Le corps est le contenu de la requête qui suit les en-têtes HTTP. Vous pouvez également transmettre une valeur de corps à Invoke-WebRequest.

Le paramètre Body peut être utilisé pour spécifier une liste de paramètres de requête ou spécifier le contenu de la réponse.

Lorsque l’entrée est une requête GET et que le corps est une table de IDictionary hachage (généralement), le corps est ajouté à l’URI en tant que paramètres de requête. Pour d’autres types de requêtes (tels que POST), le corps est défini comme valeur du corps de la requête au format standard name=value .

Le paramètre Body peut également accepter un System.Net.Http.MultipartFormDataContent objet. Cela facilite les demandes multipart/form-data. Lorsqu’un objet MultipartFormDataContent est fourni pour corps, tous les en-têtes liés au contenu fournis au ContentType, Headersou paramètres webSession sont substitués par les en-têtes de contenu de l’objet MultipartFormDataContent. Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:Object
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Certificate

Spécifie le certificat client utilisé pour une demande web sécurisée. Entrez une variable qui contient un certificat ou une commande ou une expression qui obtient le certificat.

Pour rechercher un certificat, utilisez Get-PfxCertificate ou utilisez l’applet de commande Get-ChildItem dans le lecteur Certificat (Cert:). Si le certificat n’est pas valide ou n’a pas d’autorité suffisante, la commande échoue.

Propriétés du paramètre

Type:X509Certificate
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-CertificateThumbprint

Spécifie le certificat de clé publique numérique (X509) d’un compte d’utilisateur autorisé à envoyer la demande. Entrez l’empreinte numérique du certificat.

Les certificats sont utilisés dans l’authentification basée sur les certificats client. Ils ne peuvent être mappés qu’à des comptes d’utilisateur locaux ; ils ne fonctionnent pas avec des comptes de domaine.

Pour obtenir une empreinte numérique de certificat, utilisez la commande Get-Item ou Get-ChildItem dans le lecteur powerShell Cert:.

Remarque

Cette fonctionnalité est actuellement prise en charge uniquement sur les plateformes de système d’exploitation Windows.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-ContentType

Spécifie le type de contenu de la requête web.

Si ce paramètre est omis et que la méthode de requête est POST, Invoke-WebRequest définit le type de contenu sur application/x-www-form-urlencoded. Sinon, le type de contenu n’est pas spécifié dans l’appel.

ContentType est substitué lorsqu’un objet MultipartFormDataContent est fourni pour Body .

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Credential

Spécifie un compte d’utilisateur autorisé à envoyer la demande. La valeur par défaut est l’utilisateur actuel.

Tapez un nom d’utilisateur, tel que User01 ou Domain01\User01, ou entrez un objet PSCredential généré par l’applet de commande Get-Credential.

d’informations d’identification peuvent être utilisées seule ou conjointement avec certaines options de paramètre d’authentification . Lorsqu’il est utilisé seul, il fournit uniquement des informations d’identification au serveur distant si le serveur distant envoie une demande de défi d’authentification. Lorsqu’elles sont utilisées avec options d’authentification, les informations d’identification sont envoyées explicitement.

Les informations d’identification sont stockées dans un objet PSCredential et le mot de passe est stocké en tant que SecureString.

Remarque

Pour plus d’informations sur la protection des données de SecureString, consultez Quelle est la sécurité de SecureString ?.

Propriétés du paramètre

Type:PSCredential
Valeur par défaut:Current user
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-CustomMethod

Spécifie une méthode personnalisée utilisée pour la requête web. Cela peut être utilisé si la méthode de requête requise par le point de terminaison n’est pas une option disponible sur la méthode . Méthode et CustomMethod ne peuvent pas être utilisées ensemble.

Cet exemple montre comment effectuer une requête HTTP TEST à l’API :

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

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:CM

Jeux de paramètres

CustomMethod
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
CustomMethodNoProxy
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-DisableKeepAlive

Indique que l’applet de commande définit la valeur KeepAlive dans l’en-tête HTTP sur False. Par défaut, KeepAlive est True. KeepAlive établit une connexion persistante au serveur pour faciliter les requêtes suivantes.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Form

Convertit un dictionnaire en une soumission multipart/form-data. Form ne peut pas être utilisé avec Body. Si ContentType est utilisé, il est ignoré.

Les clés du dictionnaire sont utilisées comme noms de champs de formulaire. Par défaut, les valeurs de formulaire sont converties en valeurs de chaîne.

Si la valeur est un objet System.IO.FileInfo, le contenu du fichier binaire est envoyé. Le nom du fichier est envoyé en tant que propriété nom de fichier. Le type MIME est défini comme application/octet-stream. Get-Item pouvez être utilisé pour simplifier l’approvisionnement de l’objet System.IO.FileInfo.

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

Si la valeur est un type de collection, ces tableaux ou listes sont envoyés plusieurs fois. Les valeurs de la liste sont traitées comme des chaînes par défaut. Si la valeur est un objet System.IO.FileInfo, le contenu du fichier binaire est envoyé. Les collections imbriquées ne sont pas prises en charge.

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

Dans l’exemple ci-dessus, le champ tags est fourni trois fois dans le formulaire, une fois pour chacun des Vacation, Italyet 2017. Le champ pictures est également envoyé une fois pour chaque fichier dans le dossier 2017-Italy. Le contenu binaire des fichiers de ce dossier est envoyé en tant que valeurs.

Cette fonctionnalité a été ajoutée dans PowerShell 6.1.0.

Propriétés du paramètre

Type:IDictionary
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Headers

Spécifie les en-têtes de la requête web. Entrez une table de hachage ou un dictionnaire.

Pour définir les en-têtes UserAgent, utilisez le paramètre UserAgent. Vous ne pouvez pas utiliser ce paramètre pour spécifier des en-têtes User-Agent ou de cookies.

En-têtes liés au contenu, tels que ceux Content-Type qui sont remplacés lorsqu’un objet MultipartFormDataContent est fourni pour Body.

Propriétés du paramètre

Type:IDictionary
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InFile

Obtient le contenu de la requête web à partir d’un fichier. Entrez un chemin d’accès et un nom de fichier. Si vous omettez le chemin d’accès, la valeur par défaut est l’emplacement actuel.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-MaximumRedirection

Spécifie le nombre de fois où PowerShell redirige une connexion vers un autre URI (Uniform Resource Identifier) avant l’échec de la connexion. La valeur par défaut est 5. La valeur 0 (zéro) empêche toute redirection.

Propriétés du paramètre

Type:Int32
Valeur par défaut:5
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-MaximumRetryCount

Spécifie le nombre de tentatives de connexion par PowerShell lorsqu’un code d’échec compris entre 400 et 599, inclus ou 304 est reçu. Voir également le paramètre RetryIntervalSec pour spécifier le nombre de tentatives.

Propriétés du paramètre

Type:Int32
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Method

Spécifie la méthode utilisée pour la requête web. Les valeurs acceptables pour ce paramètre sont les suivantes :

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

Le paramètre CustomMethod peut être utilisé pour les méthodes de requête non répertoriées ci-dessus.

Propriétés du paramètre

Type:WebRequestMethod
Valeur par défaut:None
Valeurs acceptées:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

StandardMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
StandardMethodNoProxy
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-NoProxy

Indique que l’applet de commande ne doit pas utiliser de proxy pour atteindre la destination. Lorsque vous devez contourner le proxy configuré dans l’environnement, utilisez ce commutateur. Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

StandardMethodNoProxy
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
CustomMethodNoProxy
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-OutFile

Spécifie le fichier de sortie pour lequel cette applet de commande enregistre le corps de la réponse. Entrez un chemin d’accès et un nom de fichier. Si vous omettez le chemin d’accès, la valeur par défaut est l’emplacement actuel. Le nom est traité comme un chemin littéral. Les noms qui contiennent des crochets ([]) doivent être placés entre guillemets simples (').

Par défaut, Invoke-WebRequest retourne les résultats au pipeline. Pour envoyer les résultats à un fichier et au pipeline, utilisez le paramètre Passthru.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-PassThru

Indique que l’applet de commande retourne les résultats, en plus de les écrire dans un fichier. Ce paramètre est valide uniquement lorsque le paramètre OutFile est également utilisé dans la commande.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-PreserveAuthorizationOnRedirect

Indique que l’applet de commande doit conserver l’en-tête Authorization, lorsqu’elle est présente, entre les redirections.

Par défaut, l’applet de commande supprime l’en-tête Authorization avant de rediriger. La spécification de ce paramètre désactive cette logique pour les cas où l’en-tête doit être envoyé à l’emplacement de redirection.

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Proxy

Spécifie un serveur proxy pour la requête, plutôt que de se connecter directement à la ressource Internet. Entrez l’URI d’un serveur proxy réseau.

Propriétés du paramètre

Type:Uri
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

StandardMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
CustomMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-ProxyCredential

Spécifie un compte d’utilisateur autorisé à utiliser le serveur proxy spécifié par le paramètre Proxy . La valeur par défaut est l’utilisateur actuel.

Entrez un nom d’utilisateur, tel que User01 ou Domain01\User01, User@Domain.Comou entrez un PSCredential objet, tel qu’un objet généré par l’applet Get-Credential de commande.

Ce paramètre est valide uniquement lorsque le paramètre proxy est également utilisé dans la commande. Vous ne pouvez pas utiliser les paramètres ProxyCredential et ProxyUseDefaultCredentials dans la même commande.

Propriétés du paramètre

Type:PSCredential
Valeur par défaut:Current user
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

StandardMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
CustomMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-ProxyUseDefaultCredentials

Indique que l’applet de commande utilise les informations d’identification de l’utilisateur actuel pour accéder au serveur proxy spécifié par le paramètre Proxy.

Ce paramètre est valide uniquement lorsque le paramètre proxy est également utilisé dans la commande. Vous ne pouvez pas utiliser les paramètres ProxyCredential et ProxyUseDefaultCredentials dans la même commande.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

StandardMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
CustomMethod
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Resume

Effectue une tentative optimale de reprise du téléchargement d’un fichier partiel. resume nécessite OutFile.

Reprendre fonctionne uniquement sur la taille du fichier local et du fichier distant et n’effectue aucune autre validation que le fichier local et le fichier distant sont identiques.

Si la taille du fichier local est inférieure à la taille de fichier distante, l’applet de commande tente de reprendre le téléchargement du fichier et d’ajouter les octets restants à la fin du fichier.

Si la taille de fichier locale est identique à la taille de fichier distante, aucune action n’est effectuée et l’applet de commande suppose que le téléchargement est déjà terminé.

Si la taille du fichier local est supérieure à la taille de fichier distante, le fichier local est remplacé et l’intégralité du fichier distant est rechargé. Ce comportement est équivalent à l'utilisation de OutFile sans Resume.

Si le serveur distant ne prend pas en charge la reprise du téléchargement, le fichier local est écrasé et l’intégralité du fichier distant est téléchargée à nouveau. Ce comportement est équivalent à l'utilisation de OutFile sans Resume.

Si le fichier local n’existe pas, il est créé et l’intégralité du fichier distant est téléchargée. Ce comportement est équivalent à l'utilisation de OutFile sans Resume.

Cette fonctionnalité a été ajoutée dans PowerShell 6.1.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-RetryIntervalSec

Spécifie l’intervalle entre les nouvelles tentatives pour la connexion lorsqu’un code d’échec compris entre 400 et 599, inclus ou 304 est reçu. Consultez également paramètre MaximumRetryCount pour spécifier le nombre de nouvelles tentatives.

Propriétés du paramètre

Type:Int32
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-SessionVariable

Spécifie une variable pour laquelle cette applet de commande crée une session de requête web et l’enregistre dans la valeur. Entrez un nom de variable sans symbole dollar ($).

Lorsque vous spécifiez une variable de session, Invoke-WebRequest crée un objet de session de requête web et l’affecte à une variable portant le nom spécifié dans votre session PowerShell. Vous pouvez utiliser la variable dans votre session dès que la commande est terminée.

Contrairement à une session distante, la session de requête web n’est pas une connexion persistante. Il s’agit d’un objet qui contient des informations sur la connexion et la demande, notamment les cookies, les informations d’identification, la valeur de redirection maximale et la chaîne de l’agent utilisateur. Vous pouvez l’utiliser pour partager l’état et les données entre les requêtes web.

Pour utiliser la session de requête web dans les requêtes web suivantes, spécifiez la variable de session dans la valeur du paramètre WebSession. PowerShell utilise les données de l’objet de session de requête web lors de l’établissement de la nouvelle connexion. Pour remplacer une valeur dans la session de requête web, utilisez un paramètre d’applet de commande, tel que UserAgent ou Credential. Les valeurs des paramètres sont prioritaires sur les valeurs de la session de requête web.

Vous ne pouvez pas utiliser les paramètres SessionVariable et WebSession dans la même commande.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:SV

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-SkipCertificateCheck

Ignore les vérifications de validation de certificat. Cela inclut toutes les validations telles que l’expiration, la révocation, l’autorité racine approuvée, etc.

Avertissement

L’utilisation de ce paramètre n’est pas sécurisée et n’est pas recommandée. Ce commutateur est destiné uniquement à être utilisé sur des hôtes connus à l’aide d’un certificat auto-signé à des fins de test. Utilisez-les à vos propres risques.

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-SkipHeaderValidation

Indique que l’applet de commande doit ajouter des en-têtes à la demande sans validation.

Ce commutateur doit être utilisé pour les sites qui nécessitent des valeurs d’en-tête non conformes aux normes. La spécification de ce commutateur désactive la validation pour autoriser la transmission de la valeur non cochée. Lorsqu’ils sont spécifiés, tous les en-têtes sont ajoutés sans validation.

Ce commutateur désactive la validation des valeurs transmises aux paramètres ContentType, Headers et UserAgent.

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-SkipHttpErrorCheck

Ce paramètre fait en sorte que le cmdlet ignore les statuts d'erreur HTTP et continue à traiter les réponses. Les réponses d’erreur sont écrites dans le pipeline comme si elles avaient réussi.

Ce paramètre a été introduit dans PowerShell 7.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-SslProtocol

Définit les protocoles SSL/TLS autorisés pour la requête web. Par défaut, tous les protocoles SSL/TLS pris en charge par le système sont autorisés. SslProtocol permet de limiter les protocoles spécifiques à des fins de conformité.

Ces valeurs sont définies comme une énumération basée sur des indicateurs. Vous pouvez combiner plusieurs valeurs pour définir plusieurs indicateurs à l’aide de ce paramètre. Les valeurs peuvent être transmises au paramètre SslProtocol sous la forme d’un tableau de valeurs ou sous la forme d’une chaîne séparée par des virgules de ces valeurs. L’applet de commande combine les valeurs à l’aide d’une opération binary-OR. La transmission de valeurs en tant que tableau est l’option la plus simple et vous permet également d’utiliser la complétion par tabulation pour les valeurs. Vous ne pouvez peut-être pas définir plusieurs options sur toutes les plateformes.

Remarque

Sur les plateformes non-Windows, il est possible de fournir des Tls ou des Tls12 en tant qu’option. La prise en charge n’est Tls13 pas disponible sur tous les systèmes d’exploitation et doit être vérifiée pour chaque système d’exploitation.

Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0 et la prise en charge de Tls13 a été ajoutée dans PowerShell 7.1.

Propriétés du paramètre

Type:WebSslProtocol
Valeur par défaut:None
Valeurs acceptées:Default, Tls, Tls11, Tls12
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-TimeoutSec

Spécifie la durée pendant laquelle la requête peut être en attente avant qu’elle expire. Entrez une valeur en secondes. La valeur par défaut, 0, spécifie un délai d’attente indéfini.

Le retour ou l’expiration d’une requête DNS (Domain Name System) peut prendre jusqu’à 15 secondes. Si votre demande contient un nom d’hôte qui nécessite une résolution et que vous définissez TimeoutSec sur une valeur supérieure à zéro, mais inférieure à 15 secondes, il peut s’écouler 15 secondes ou plus avant qu’une exception WebException ne soit levée et que votre demande expire.

Propriétés du paramètre

Type:Int32
Valeur par défaut:0
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Token

Jeton OAuth ou Bearer à inclure dans la requête. Le jeton est requis par certaines options d’authentification. Il ne peut pas être utilisé indépendamment.

jeton prend un SecureString contenant le jeton. Pour fournir le jeton manuellement, utilisez les éléments suivants :

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

Ce paramètre a été introduit dans PowerShell 6.0.

Propriétés du paramètre

Type:SecureString
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-TransferEncoding

Spécifie une valeur pour l’en-tête de réponse HTTP d’encodage de transfert. Les valeurs acceptables pour ce paramètre sont les suivantes :

  • Segmenté
  • Compresser
  • Dégonfler
  • GZip
  • Identité

Propriétés du paramètre

Type:String
Valeur par défaut:None
Valeurs acceptées:chunked, compress, deflate, gzip, identity
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Uri

Spécifie l’URI (Uniform Resource Identifier) de la ressource Internet à laquelle la requête web est envoyée. Entrez un URI. Ce paramètre prend uniquement en charge HTTP ou HTTPS.

Ce paramètre est obligatoire. Le nom du paramètre uri est facultatif.

Propriétés du paramètre

Type:Uri
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-UseBasicParsing

Ce paramètre a été déconseillé. À compter de PowerShell 6.0.0, toutes les requêtes Web utilisent uniquement l’analyse de base. Ce paramètre est inclus uniquement pour la compatibilité descendante et toute utilisation n’a aucun effet sur l’opération de l’applet de commande.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-UseDefaultCredentials

Indique que l’applet de commande utilise les informations d’identification de l’utilisateur actuel pour envoyer la requête web. Cela ne peut pas être utilisé avec Authentication ou Credential et peut ne pas être pris en charge sur toutes les plateformes.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-UserAgent

Spécifie une chaîne d’agent utilisateur pour la requête web.

L’agent utilisateur par défaut est similaire à Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 avec de légères variations pour chaque système d’exploitation et plateforme.

Pour tester un site Web avec la chaîne d’agent utilisateur standard utilisée par la plupart des navigateurs Internet, utilisez les propriétés de la classe PSUserAgent , telles que Chrome, FireFox, InternetExplorer, Opera et Safari.

Par exemple, la commande suivante utilise la chaîne de l’agent utilisateur pour Internet Explorer : Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-WebSession

Spécifie une session de requête web. Entrez le nom de la variable, y compris le signe dollar ($).

Pour remplacer une valeur dans la session de requête web, utilisez un paramètre d’applet de commande, tel que UserAgent ou Credential. Les valeurs des paramètres sont prioritaires sur les valeurs de la session de requête web. Les en-têtes associés au contenu, tels que Content-Type, sont également substitués lorsqu’un objet MultipartFormDataContent est fourni pour corps.

Contrairement à une session distante, la session de requête web n’est pas une connexion persistante. Il s’agit d’un objet qui contient des informations sur la connexion et la demande, notamment les cookies, les informations d’identification, la valeur de redirection maximale et la chaîne de l’agent utilisateur. Vous pouvez l’utiliser pour partager l’état et les données entre les requêtes web.

Pour créer une session de requête web, entrez un nom de variable, sans signe dollar, dans la valeur du paramètre SessionVariable d'une commande Invoke-WebRequest. Invoke-WebRequest crée la session et l’enregistre dans la variable. Dans les commandes suivantes, utilisez la variable comme valeur du paramètre webSession.

Vous ne pouvez pas utiliser les paramètres SessionVariable et WebSession dans la même commande.

Propriétés du paramètre

Type:WebRequestSession
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

(All)
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

Object

Vous pouvez diriger le corps d’une requête web vers Invoke-WebRequest.

Sorties

BasicHtmlWebResponseObject

Notes

À compter de PowerShell 6.0.0 Invoke-WebRequest prend uniquement en charge l’analyse de base.

Pour plus d’informations, consultez BasicHtmlWebResponseObject.

En raison des modifications apportées à .NET Core 3.1, PowerShell 7.0 et versions ultérieures utilisent la propriété HttpClient.DefaultProxy pour déterminer la configuration du proxy.

La valeur de cette propriété est déterminée par votre plateforme :

  • pour Windows: lit la configuration du proxy à partir de variables d’environnement. Si ces variables ne sont pas définies, la propriété est dérivée des paramètres de proxy de l’utilisateur.
  • pour macOS: lit la configuration du proxy à partir de variables d’environnement. Si ces variables ne sont pas définies, la propriété est dérivée des paramètres proxy du système.
  • pour linux: lit la configuration du proxy à partir de variables d’environnement. Si ces variables ne sont pas définies, la propriété initialise une instance non configurée qui contourne toutes les adresses.

Les variables d’environnement utilisées pour l’initialisation DefaultProxy sur les plateformes Windows et Unix sont les suivantes :

  • HTTP_PROXY: nom d’hôte ou adresse IP du serveur proxy utilisé sur les requêtes HTTP.
  • HTTPS_PROXY: le nom d’hôte ou l’adresse IP du serveur proxy utilisé sur les requêtes HTTPS.
  • ALL_PROXY: le nom d’hôte ou l’adresse IP du serveur proxy utilisé pour les requêtes HTTP et HTTPS dans le cas où HTTP_PROXY ou HTTPS_PROXY non défini.
  • NO_PROXY: liste séparée par des virgules de noms d’hôte qui doivent être exclus du proxy.