Invoke-WebRequest
Obtient le contenu d’une page web sur Internet.
Syntax
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
-NoProxy
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
-CustomMethod <String>
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
-CustomMethod <String>
-NoProxy
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Description
L’applet Invoke-WebRequest
de commande 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.
À partir de PowerShell 7.0, prend en charge la Invoke-WebRequest
configuration du proxy définie par les variables d’environnement. Consultez la section Notes de cet article.
Important
Les exemples de cet article font référence aux hôtes dans le contoso.com
domaine. Il s’agit d’un domaine fictif utilisé par Microsoft à titre d’exemple. Les exemples sont conçus pour montrer comment utiliser les applets de commande.
Toutefois, étant donné que les sites n’existent contoso.com
pas, les exemples ne fonctionnent pas. Adaptez les exemples aux hôtes de votre environnement.
Exemples
Exemple 1 : Envoyer une requête web
Cet exemple utilise l’applet de Invoke-WebRequest
commande 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 demande et enregistre la réponse dans la $Response
variable.
La deuxième commande obtient n’importe quel champ d’entrée où la propriété Name est semblable à "* Value"
. Les résultats filtrés sont dirigés vers Select-Object
pour sélectionner les propriétés Name et Value .
Exemple 2 : Utiliser un service web avec état
Cet exemple montre comment utiliser l’applet de Invoke-WebRequest
commande 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 à par $Session
lui-même affiche l’objet WebRequestSession
dans la variable.
Le deuxième appel à Invoke-WebRequest
extrait 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éé lors de la connexion. Le résultat est enregistré dans la $ProfileResponse
variable.
L’appel à par $ProfileResponse
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 Invoke-WebRequest
commande pour obtenir le contenu de la page web. Ensuite, il utilise la propriété Links du BasicHtmlWebResponseObject
qui Invoke-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 Invoke-WebRequest
commande 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 $Response
variable.
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 de 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 suppriment .StreamWriter
Notez que la propriété Encodage a la valeur 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 Invoke-WebRequest
commande charger un fichier en tant que multipart/form-data
soumission. Le fichier c:\document.txt
est envoyé en tant que champ document
de formulaire 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 simplifié de plusieurs parties/de données de formulaire
Certaines API nécessitent multipart/form-data
des soumissions pour charger 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 les champs suivants : firstName
, lastName
, email
, avatar
, birthday
et hobbies
. L’API s’attend à ce qu’une image pour la photo de profil utilisateur soit fournie dans le avatar
champ. L’API accepte également plusieurs hobbies
entrées à soumettre dans le même formulaire.
Lors de la création de $Form
HashTable, les noms de clés sont utilisés comme noms de champs de formulaire. Par défaut, les valeurs de 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 avatar
clé, 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 hobbies
clé, le hobbies
champ est présent dans les soumissions une fois pour chaque élément de liste.
Exemple 7 : Intercepter les messages de non-réussite de Invoke-WebRequest
Lorsque Invoke-WebRequest
rencontre un message HTTP non réussi (404, 500, etc.), il ne retourne aucune sortie et lève une erreur de fin. Pour intercepter l’erreur et afficher le StatusCode , vous pouvez placer l’exécution dans un try/catch
bloc.
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 catch
bloc, 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, la fourniture d’informations d’identification ou d’une option d’authentification avec un URI qui ne commence pas par https://
entraîne une erreur et la demande est abandonnée pour empêcher la communication involontaire de secrets en texte brut sur des connexions non chiffrées. Pour remplacer ce comportement à vos propres risques, 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 est fourni uniquement pour la compatibilité avec les systèmes hérités qui ne peuvent pas fournir de connexions chiffrées. Utilisez à vos risques et périls.
Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Spécifie le type d’authentification explicite à utiliser pour la demande. La valeur par défaut est None (Aucun). 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 n’est utilisée.Basic
: nécessite des informations d’identification. Les informations d’identification seront utilisées pour envoyer un en-tête RFC 7617 Basic AuthenticationAuthorization: Basic
au formatbase64(user:password)
.Bearer
: nécessite le paramètre Token . Envoie un en-tête RFC 6750Authorization: Bearer
avec le jeton fourni.OAuth
: nécessite le paramètre Token . Envoie un en-tête RFC 6750Authorization: Bearer
avec le jeton fourni.
La fourniture de l’authentification remplace tous Authorization
les en-têtes fournis aux en-têtes ou inclus dans WebSession.
Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.
Type: | WebAuthenticationType |
Accepted values: | None, Basic, Bearer, OAuth |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Body
Spécifie le corps de la demande. Le corps est le contenu de la demande qui suit les en-têtes.
Vous pouvez également diriger une valeur de corps vers Invoke-WebRequest
.
Le paramètre Body peut être utilisé pour spécifier une liste de paramètres de demande ou le contenu de la réponse.
Lorsque l’entrée est une requête GET et que le corps est un IDictionary
(généralement, une table de hachage), le corps est ajouté à l’URI en tant que paramètres de requête. Pour les autres types de requête (par exemple, POST), le corps est défini comme valeur du corps de la demande au format standard name=value
.
Le paramètre Body peut également accepter un System.Net.Http.MultipartFormDataContent
objet . Cela facilite les multipart/form-data
demandes. Lorsqu’un objet MultipartFormDataContent est fourni pour Body, tous les en-têtes liés au contenu fournis aux paramètres ContentType, Headers ou WebSession sont remplacés par les en-têtes Content de l’objet MultipartFormDataContent . Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Certificate
Spécifie le certificat client utilisé pour une demande web sécurisée. Entrez une variable qui contient un certificat, ou bien une commande ou une expression qui obtient le certificat.
Pour rechercher un certificat, utilisez Get-PfxCertificate
ou utilisez l’applet de Get-ChildItem
commande dans le lecteur Certificate (Cert:
). Si le certificat n’est pas valide ou ne dispose pas d’une autorité suffisante, la commande échoue.
Type: | X509Certificate |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CertificateThumbprint
Spécifie le certificat de clé publique numérique (X509) d'un compte d'utilisateur qui a l'autorisation d'envoyer la demande. Entrez l’empreinte numérique du certificat.
Les certificats sont utilisés dans l'authentification par certificat client. Ils ne peuvent être mappés qu’à des comptes d’utilisateur locaux ; ils ne fonctionnent pas avec les comptes de domaine.
Pour obtenir une empreinte numérique de certificat, utilisez la Get-Item
commande ou Get-ChildItem
dans le lecteur PowerShell Cert:
.
Notes
Cette fonctionnalité est actuellement uniquement prise en charge sur les plateformes de système d’exploitation Windows.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContentType
Spécifie le type de contenu de la demande 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 remplacé lorsqu’un objet MultipartFormDataContent est fourni pour Body.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Spécifie un compte d'utilisateur qui a l'autorisation d'envoyer la demande. La valeur par défaut est l’utilisateur actuel.
Tapez un nom d’utilisateur, par exemple User01 ou Domain01\User01, ou entrez un objet PSCredential généré par l’applet de Get-Credential
commande.
Les informations d’identification peuvent être utilisées seules ou conjointement avec certaines options de paramètre d’authentification . Lorsqu’il est utilisé seul, il fournit des informations d’identification au serveur distant uniquement si le serveur distant envoie une demande de demande d’authentification. Lorsqu’elles sont utilisées avec les options d’authentification , les informations d’identification sont explicitement envoyées.
Les informations d’identification sont stockées dans un objet PSCredential et le mot de passe est stocké en tant que SecureString.
Notes
Pour plus d’informations sur la protection des données SecureString , consultez Comment SecureString est-il sécurisé ?.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 . Method et CustomMethod ne peuvent pas être utilisés ensemble.
Cet exemple envoie une TEST
requête HTTP à l’API :
Invoke-WebRequest -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'
Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.
Type: | String |
Aliases: | CM |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 a la valeur True. KeepAliveétablit une connexion permanente au serveur pour faciliter les demandes suivantes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Form
Convertit un dictionnaire en soumission multipart/form-data
. Le formulaire 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 soumis en tant que propriété filename . Le type MIME est défini sur application/octet-stream
. Get-Item
peut être utilisé pour simplifier la fourniture 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, tels que Tableaux ou Listes, le champ pour est envoyé 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, les tags
champs sont fournis trois fois dans le formulaire, une fois pour chacun de Vacation
, Italy
et 2017
. Le pictures
champ est également envoyé une fois pour chaque fichier dans le 2017-Italy
dossier. 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.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Headers
Spécifie les en-têtes de la demande web. Entrez une table de hachage ou un dictionnaire.
Pour définir des 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 cookie.
Les en-têtes liés au contenu, tels que Content-Type
est remplacé lorsqu’un objet MultipartFormDataContent est fourni pour Body.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InFile
Obtient le contenu de la demande 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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | Int32 |
Position: | Named |
Default value: | 5 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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. Consultez également paramètre RetryIntervalSec pour spécifier le nombre de nouvelles tentatives.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Method
Spécifie la méthode utilisée pour la demande web. Les valeurs valides pour ce paramètre sont :
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.
Type: | WebRequestMethod |
Accepted values: | Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 dans le pipeline. Pour envoyer les résultats à un fichier et au pipeline, utilisez le paramètre Passthru.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Indique que l’applet de commande retourne les résultats, en plus de les écrire dans un fichier. Ce paramètre n'est valide que quand le paramètre OutFile est également utilisé dans la commande.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PreserveAuthorizationOnRedirect
Indique que l’applet de commande doit conserver l’en-tête Authorization
, le cas échéant, entre les redirections.
Par défaut, l’applet de commande supprime l’en-tête Authorization
avant la redirection. 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Proxy
Spécifie un serveur proxy pour la demande, plutôt que de se connecter directement à la ressource Internet. Entrez l'URI d'un serveur proxy du réseau.
Type: | Uri |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ProxyCredential
Spécifie un compte d'utilisateur qui a l'autorisation d'utiliser le serveur proxy spécifié par le paramètre Proxy. La valeur par défaut est l’utilisateur actuel.
Tapez un nom d’utilisateur, tel que User01 ou Domain01\User01, User@Domain.Comou entrez un PSCredential
objet, tel que celui 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.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Resume
Effectue une tentative de tous les efforts pour reprendre le téléchargement d’un fichier partiel. Resume nécessite OutFile.
Resume fonctionne uniquement sur la taille du fichier local et du fichier distant et n’effectue aucune autre validation indiquant que le fichier local et le fichier distant sont identiques.
Si la taille du fichier local est inférieure à la taille du fichier distant, 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 du fichier local est identique à la taille du fichier distant, 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 du fichier distant, le fichier local est remplacé et l’ensemble du fichier distant est à nouveau téléchargé. Ce comportement est identique à l’utilisation de OutFile sans CV.
Si le serveur distant ne prend pas en charge la reprise du téléchargement, le fichier local est remplacé et l’intégralité du fichier distant est à nouveau téléchargé. Ce comportement est identique à l’utilisation de OutFile sans CV.
Si le fichier local n’existe pas, le fichier local est créé et l’intégralité du fichier distant est téléchargé. Ce comportement est identique à l’utilisation de OutFile sans CV.
Cette fonctionnalité a été ajoutée dans PowerShell 6.1.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RetryIntervalSec
Spécifie l’intervalle entre les nouvelles tentatives de 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.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 le 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 à distance, la session de demande 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 demandes web.
Pour utiliser la session de demande web dans les demandes 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 demande web, utilisez un paramètre d'applet de commande, comme UserAgent ou Credential. Les valeurs de paramètre sont prioritaires sur les valeurs de la session de demande web.
Vous ne pouvez pas utiliser les paramètres SessionVariable et WebSession dans la même commande.
Type: | String |
Aliases: | SV |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 uniquement destiné à être utilisé sur des hôtes connus à l’aide d’un certificat auto-signé à des fins de test. Utilisez à vos risques et périls.
Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 qui ne sont pas conformes aux normes. La spécification de ce commutateur désactive la validation pour permettre à la valeur d’être transmise 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.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipHttpErrorCheck
Ce paramètre oblige l’applet de commande à ignorer les états d’erreur HTTP et à continuer à traiter les réponses. Les réponses d’erreur sont écrites dans le pipeline comme si elles réussissaient.
Ce paramètre a été introduit dans PowerShell 7.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 à des protocoles spécifiques à des fins de conformité.
Ces valeurs sont définies comme une énumération basée sur un indicateur. Vous pouvez combiner plusieurs valeurs pour définir plusieurs indicateurs à l’aide de ce paramètre. Les valeurs peuvent être passées au paramètre SslProtocol sous la forme d’un tableau de valeurs ou 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 saisie semi-automatique sur les valeurs. Vous ne pourrez peut-être pas définir plusieurs options sur toutes les plateformes.
Notes
Sur les plateformes autres que Windows, il est possible qu’il ne soit pas possible de fournir Tls
ou Tls12
en option. La prise en charge de Tls13
n’est pas disponible sur tous les systèmes d’exploitation et doit être vérifiée par système d’exploitation.
Cette fonctionnalité a été ajoutée dans PowerShell 6.0.0 et la prise en charge Tls13
a été ajoutée dans PowerShell 7.1.
Type: | WebSslProtocol |
Accepted values: | Default, Tls, Tls11, Tls12 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TimeoutSec
Spécifie la durée pendant laquelle la demande peut être en attente avant son expiration. Entrez une valeur en secondes. La valeur par défaut, 0, spécifie un délai d'attente indéfini.
Une requête DNS (Domain Name System) peut prendre jusqu’à 15 secondes pour retourner ou expirer. Si votre requête 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’agir de 15 secondes ou plus avant qu’une WebException soit levée et que votre demande expire.
Type: | Int32 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Token
Jeton OAuth ou porteur à inclure dans la demande. Le jeton est requis par certaines options d’authentification . Il ne peut pas être utilisé indépendamment.
Le 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.
Type: | SecureString |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TransferEncoding
Spécifie une valeur pour l'en-tête de réponse HTTP de codage de transfert. Les valeurs valides pour ce paramètre sont :
- Segments
- Compresser
- Deflate
- GZip
- Identité
Type: | String |
Accepted values: | chunked, compress, deflate, gzip, identity |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Type: | Uri |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseBasicParsing
Ce paramètre a été déprécié. À compter de PowerShell 6.0.0, toutes les requêtes Web utilisent l’analyse de base uniquement. Ce paramètre est inclus pour la compatibilité descendante uniquement et toute utilisation de celui-ci n’a aucun effet sur le fonctionnement de l’applet de commande.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseDefaultCredentials
Indique que l’applet de commande utilise les informations d’identification de l’utilisateur actuel pour envoyer la requête web. Il ne peut pas être utilisé avec l’authentification ou les informations d’identification et peut ne pas être pris en charge sur toutes les plateformes.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UserAgent
Spécifie une chaîne d'agent utilisateur pour la demande 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)
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WebSession
Spécifie une session de demande web. Entrez le nom de la variable, y compris le signe dollar ($
).
Pour remplacer une valeur dans la session de demande web, utilisez un paramètre d'applet de commande, comme UserAgent ou Credential. Les valeurs de paramètre sont prioritaires sur les valeurs de la session de demande web. Les en-têtes liés au contenu, tels que Content-Type
, sont également remplacés lorsqu’un objet MultipartFormDataContent est fourni pour Body.
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 demandes 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 Invoke-WebRequest
commande. 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.
Type: | WebRequestSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger le corps d’une requête web vers Invoke-WebRequest
.
Sorties
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 de 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 un instance non configuré qui contourne toutes les adresses.
Les variables d’environnement utilisées pour l’initialisation de 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
: nom d’hôte ou 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é sur les requêtes HTTP et HTTPS au cas oùHTTP_PROXY
ouHTTPS_PROXY
ne sont pas définis.NO_PROXY
: liste de noms d’hôte séparés par des virgules à exclure comme proxy.