Partager via


Invoke-RestMethod

Envoie une demande HTTP ou HTTPS à un service web RESTful.

Syntaxe

Invoke-RestMethod
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-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-RestMethod
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-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-RestMethod
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-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-RestMethod
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-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>]

Description

L’applet Invoke-RestMethod de commande envoie des requêtes HTTP et HTTPS aux services web REST (Representational State Transfer) qui retournent des données richement structurées.

PowerShell met en forme la réponse basée sur le type de données. Pour un flux RSS ou ATOM, PowerShell retourne les nœuds XML Item ou Entry. Pour JavaScript Object Notation (JSON) ou XML, PowerShell convertit ou désérialise le contenu en [PSCustomObject] objets. Les commentaires sont autorisés dans les données JSON.

Remarque

Lorsque le point de terminaison REST retourne plusieurs objets, les objets sont reçus sous forme de tableau. Si vous dirigez la sortie de Invoke-RestMethod vers une autre commande, elle est envoyée en tant qu’objet [Object[]] unique. Le contenu de ce tableau n’est pas énuméré pour la commande suivante sur le pipeline.

Cette applet de commande est introduite dans Windows PowerShell 3.0.

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

À compter de PowerShell 7.4, l’encodage de caractères pour les requêtes est défini par défaut sur UTF-8 au lieu d’ASCII. Si vous avez besoin d’un encodage différent, vous devez définir l’attribut charset dans l’en-tête Content-Type .

Exemples

Exemple 1 : Obtenir le flux RSS PowerShell

Cet exemple utilise l’applet Invoke-RestMethod de commande pour obtenir des informations à partir du flux RSS du blog PowerShell. La commande utilise l’applet Format-Table de commande pour afficher les valeurs des propriétés Title et pubDate de chaque blog dans une table.

Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/ |
  Format-Table -Property Title, pubDate

Title                                                                pubDate
-----                                                                -------
Join the PowerShell 10th Anniversary Celebration!                    Tue, 08 Nov 2016 23:00:04 +0000
DSC Resource Kit November 2016 Release                               Thu, 03 Nov 2016 00:19:07 +0000
PSScriptAnalyzer Community Call - Oct 18, 2016                       Thu, 13 Oct 2016 17:52:35 +0000
New Home for In-Box DSC Resources                                    Sat, 08 Oct 2016 07:13:10 +0000
New Social Features on Gallery                                       Fri, 30 Sep 2016 23:04:34 +0000
PowerShellGet and PackageManagement in PowerShell Gallery and GitHub Thu, 29 Sep 2016 22:21:42 +0000
PowerShell Security at DerbyCon                                      Wed, 28 Sep 2016 01:13:19 +0000
DSC Resource Kit September Release                                   Thu, 22 Sep 2016 00:25:37 +0000
PowerShell DSC and implicit remoting broken in KB3176934             Tue, 23 Aug 2016 15:07:50 +0000
PowerShell on Linux and Open Source!                                 Thu, 18 Aug 2016 15:32:02 +0000

Exemple 2 : Exécuter une requête POST

Dans cet exemple, un utilisateur s’exécute Invoke-RestMethod pour effectuer une demande POST sur un site web intranet dans l’organisation de l’utilisateur.

$Cred = Get-Credential
$Url = "https://server.contoso.com:8089/services/search/jobs/export"
$Body = @{
    search = "search index=_internal | reverse | table index,host,source,sourcetype,_raw"
    output_mode = "csv"
    earliest_time = "-2d@d"
    latest_time = "-1d@d"
}
Invoke-RestMethod -Method 'Post' -Uri $url -Credential $Cred -Body $body -OutFile output.csv

L'applet de commande demande les informations d'identification et les stocke dans $Cred. $Url contient l’URL du point de terminaison REST.

La $Body variable décrit les critères de recherche, spécifie csv comme mode de sortie et spécifie une période pour les données retournées qui commencent il y a deux jours et se termine il y a un jour. La variable de corps spécifie les valeurs des paramètres qui s’appliquent à l’API REST particulière avec laquelle Invoke-RestMethod communique.

La Invoke-RestMethod commande est exécutée avec toutes les variables en place, en spécifiant un chemin d’accès et un nom de fichier pour le fichier de sortie CSV résultant.

Exemple 3 : Suivre les liens de relation

Certaines API REST prennent en charge la pagination via des liens de relation par RFC5988. Au lieu d’analyser l’en-tête pour obtenir l’URL de la page suivante, vous pouvez utiliser l’applet de commande pour vous. Cet exemple retourne les deux premières pages de problèmes du dépôt GitHub PowerShell.

$url = 'https://api.github.com/repos/powershell/powershell/issues'
Invoke-RestMethod $url -FollowRelLink -MaximumFollowRelLink 2

Exemple 4 : Soumission de données multipart/formulaire simplifiée

Certaines API nécessitent multipart/form-data des soumissions pour charger des fichiers et du contenu mixte. Cet exemple montre comment mettre à jour le profil d’un 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-RestMethod -Uri $Uri -Method Post -Form $Form

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

Lors de la création du $Form hashTable, 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 qu’un tableau ou une liste, 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 5 : Passer plusieurs en-têtes

Les API nécessitent souvent des en-têtes passés pour l’authentification ou la validation. Cet exemple montre comment passer plusieurs en-têtes d’un hash-table à une API REST.

$headers = @{
    'userId' = 'UserIDValue'
    'token' = 'TokenValue'
}
Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body

Exemple 6 : Énumérer les éléments retournés sur le pipeline

GitHub retourne plusieurs objets dans un tableau. Si vous dirigez la sortie vers une autre commande, elle est envoyée en tant qu’objet [Object[]]unique.

Pour énumérer les objets dans le pipeline, dirigez les résultats vers Write-Output ou encapsulez l’applet de commande entre parenthèses. L’exemple suivant compte le nombre d’objets retournés par GitHub. Compte ensuite le nombre d’objets énumérés dans le pipeline.

$uri = 'https://api.github.com/repos/microsoftdocs/powershell-docs/issues'
$x = 0
Invoke-RestMethod -Uri $uri | ForEach-Object { $x++ }
$x
1

$x = 0
(Invoke-RestMethod -Uri $uri) | ForEach-Object { $x++ }
$x
30

$x = 0
Invoke-RestMethod -Uri $uri | Write-Output | ForEach-Object { $x++ }
$x
30

Exemple 7 : Ignorer la validation d’en-tête

Par défaut, l’applet Invoke-RestMethod de commande valide les valeurs d’en-têtes connus qui ont un format de valeur défini par des normes. L’exemple suivant montre comment cette validation peut déclencher une erreur et comment utiliser le paramètre SkipHeaderValidation pour éviter de valider des valeurs pour les points de terminaison qui tolèrent des valeurs non mises en forme non valides.

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

Invoke-RestMethod -Uri $Uri -Headers $InvalidHeaders

Invoke-RestMethod -Uri $Uri -Headers $InvalidHeaders -SkipHeaderValidation |
    Format-List

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

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=Root=1-62f150a6-27754fd4226f31b43a3d2874}

httpbin.org est un service qui retourne des informations sur les demandes web et les réponses pour la résolution des problèmes. La $Uri variable est affectée au /headers point de terminaison du service, qui retourne les en-têtes d’une requête en tant que contenu dans sa réponse.

L’en-tête If-Match de requête est défini dans la section RFC-7232 3.1 et nécessite que la valeur de cet en-tête soit définie avec des guillemets environnants. La $InvalidHeaders variable est affectée à une table de hachage dont la valeur If-Match n’est pas valide, car elle est définie comme 12345 étant au lieu de "12345".

L’appel Invoke-RestMethod avec les en-têtes non valides retourne un rapport d’erreur indiquant que la valeur mise en forme n’est pas valide. La demande n’est pas envoyée au point de terminaison.

L’appel Invoke-RestMethod avec le paramètre SkipHeaderValidation ignore l’échec de validation et envoie la requête au point de terminaison. Étant donné que le point de terminaison tolère les valeurs d’en-tête non conformes, l’applet de commande retourne l’objet de réponse sans erreur.

Exemple 8 : Envoyer une requête à l’aide de HTTP 2.0

Cet exemple interroge le problème GitHub à l’aide du protocole HTTP 2.0.

$uri = 'https://api.github.com/repos/microsoftdocs/powershell-docs/issues'
Invoke-RestMethod -Uri $uri -HttpVersion 2.0 -SkipCertificateCheck

Exemple 9 : Envoyer une requête à une application de socket Unix

Certaines applications, telles que Docker, exposent un socket Unix pour la communication. Cet exemple interroge une liste d’images Docker à l’aide de l’API Docker. L’applet de commande se connecte au démon Docker à l’aide du socket Unix.

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

Paramètres

-AllowInsecureRedirect

Autorise la redirection de HTTPS vers HTTP. Par défaut, toute requête redirigée de HTTPS vers HTTP entraîne une erreur et la requête est abandonnée pour empêcher la communication involontaire en texte brut sur des connexions non chiffrées. Pour remplacer ce comportement à votre propre risque, utilisez le paramètre AllowInsecureRedirect .

Ce paramètre a été ajouté dans PowerShell 7.4.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-AllowUnencryptedAuthentication

Permet l’envoi d’informations d’identification et de secrets sur des connexions non chiffrées. Par défaut, la fourniture de Credential ou de toute autre option d'authentification avec un Uri qui ne commence pas par https:// entraîne une erreur et l'abandon de la requête, afin d'éviter la communication involontaire de secrets en texte clair sur 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. Elle est fournie uniquement pour la 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.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Authentication

Spécifie le type d’authentification explicite à utiliser pour la demande. La valeur par défaut est Aucun. Le paramètre d’authentification 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 d’authentification n’est pas fournie. Aucune authentification explicite n’est utilisée.
  • Basic: nécessite des informations d’identification. Les informations d’identification sont utilisées pour envoyer un en-tête d’authentification de base RFC 7617 Authorization: Basic au format base64(user:password).
  • Bearer: nécessite le paramètre Token . Envoie un en-tête RFC 6750 Authorization: Bearer avec le jeton fourni.
  • OAuth: nécessite le paramètre Token . Envoie un en-tête RFC 6750 Authorization: Bearer avec le jeton fourni.

L’approvisionnement 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
Valeurs acceptées:None, Basic, Bearer, OAuth
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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-RestMethod.

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. Pour les paramètres de requête, l’applet de commande utilise la méthode de méthode System.Net.WebUtility.UrlEncode pour encoder les paires clé-valeur. Pour plus d’informations sur les chaînes d’encodage pour les URL, consultez la référence de méthode UrlEncode().

Lorsque l’entrée est une requête POST et que le corps est une chaîne, la valeur à gauche du premier signe égal (=) est définie en tant que clé dans les données de formulaire et le texte restant est défini comme valeur. Pour spécifier plusieurs clés, utilisez un objet IDictionary , tel qu’une table de hachage, pour le corps.

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 d’autres types de requêtes (tels que PATCH), le corps est défini comme valeur du corps de la requête au format standard name=value avec les valeurs encodées par l’URL.

Lorsque l’entrée est un objet System.Xml.XmlNode et que la déclaration XML spécifie un encodage, cet encodage est utilisé pour les données de la requête, sauf substitution par le paramètre ContentType .

Lorsque le corps est un formulaire ou qu’il s’agit de la sortie d’un autre Invoke-WebRequest appel, PowerShell définit le contenu de la demande sur les champs du formulaire.

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

Type:Object
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:True
Accepter les caractères génériques: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 ou utilisez Get-PfxCertificate l’applet Get-ChildItem de commande dans le lecteur de certificat (Cert:). Si le certificat n’est pas valide ou n’a pas d’autorité suffisante, la commande échoue.

Type:X509Certificate
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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. Les certificats ne peuvent être mappés qu’à des comptes d’utilisateur locaux, et non à des comptes de domaine.

Pour afficher l’empreinte numérique du certificat, utilisez la ou Get-Item la Get-ChildItem commande pour rechercher le certificat dans Cert:\CurrentUser\My.

Remarque

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

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ConnectionTimeoutSeconds

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.

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 ConnectionTimeoutSeconds sur une valeur supérieure à zéro, mais moins de 15 secondes, cela peut prendre 15 secondes ou plus avant qu’une exception WebException soit levée et que votre requête expire.

Ce paramètre a remplacé le paramètre TimeoutSec dans PowerShell 7.4. Vous pouvez utiliser TimeoutSec comme alias pour ConnectionTimeoutSeconds.

Type:Int32
Alias:TimeoutSec
Position:Named
Valeur par défaut:0
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ContentType

Spécifie le type de contenu de la demande web.

Si la valeur de ContentType contient le format d’encodage (tel que charset), l’applet de commande utilise ce format pour encoder le corps de la requête web. Si ContentType ne spécifie pas de format d’encodage, le format d’encodage par défaut est utilisé à la place. Un exemple de ContentType avec un format d’encodage est , qui spécifie l’alphabet text/plain; charset=iso-8859-5.

Si vous omettez le paramètre, le type de contenu peut être différent en fonction de la méthode HTTP que vous utilisez :

  • Pour une méthode POST, le type de contenu est application/x-www-form-urlencoded
  • Pour une méthode PUT, le type de contenu est application/json
  • Pour les autres méthodes, le type de contenu n’est pas spécifié dans la requête

Si vous utilisez le paramètre InFile pour charger un fichier, vous devez définir le type de contenu. En règle générale, le type doit être application/octet-stream. Toutefois, vous devez définir le type de contenu en fonction des exigences du point de terminaison.

ContentType est substitué lorsque l'corps est un objet MultipartFormDataContent.

À compter de PowerShell 7.4, si vous utilisez ce paramètre et le paramètre Headers pour définir l’en-tête Content-Type , la valeur spécifiée dans le paramètre ContentType est utilisée.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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, tel que User01commande.

Vous pouvez utiliser identifiant seul ou conjointement avec certaines options de paramètres 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'elle est utilisée avec les options d'authentification , l'information d'identification est envoyée 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 SecureString , consultez Comment secure is SecureString ?.

Type:PSCredential
Position:Named
Valeur par défaut:Current user
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-CustomMethod

Spécifie la méthode personnalisée utilisée pour la requête web. Cela peut être utilisé lorsque 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.

Exemple :

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

Une requête HTTP est envoyée TEST à l’API.

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

Type:String
Alias:CM
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-DisableKeepAlive

Définit la valeur KeepAlive dans l’en-tête HTTP sur Faux. Par défaut, KeepAlive a la valeur True. KeepAlive établit une connexion persistante au serveur pour faciliter les demandes suivantes.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Indique que l’applet de commande doit suivre les liens de relation.

Certaines API REST prennent en charge la pagination via des liens de relation par RFC5988. Au lieu d’analyser l’en-tête pour obtenir l’URL de la page suivante, vous pouvez utiliser l’applet de commande pour vous. Pour définir le nombre de fois où suivre les liens de relation, utilisez le paramètre MaximumFollowRelLink .

Lorsque vous utilisez ce commutateur, l’applet de commande retourne une collection de pages de résultats. Chaque page de résultats peut contenir plusieurs éléments de résultat.

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

Type:SwitchParameter
Alias:FL
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Form

Convertit un dictionnaire en multipart/form-data soumission. Le formulaire peut ne pas être utilisé avec le corps. Le ContentType 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 filename. Le type MIME est défini comme application/octet-stream. Get-Item peut ê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, tel qu’un tableau ou une liste, le champ de formulaire 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', 'Italie', '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 chacune des valeurs : Vacation, Italyet 2017. Le champ pictures est 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.

Type:IDictionary
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Headers

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

Les en-têtes associés au contenu, tels que Content-Type ceux-ci sont remplacés lorsqu’un MultipartFormDataContent objet est fourni pour Body.

À compter de PowerShell 7.4, si vous utilisez ce paramètre pour définir l’en-tête et utiliser le Content-Type paramètre ContentType, la valeur spécifiée dans le paramètre ContentType est utilisée.

Type:IDictionary
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-HttpVersion

Spécifie la version HTTP utilisée pour la requête. Par défaut, il s’agit de 1.1.

Les valeurs valides sont :

  • 1.0
  • 1.1
  • 2.0
  • 3.0
Type:Version
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-InFile

Obtient le contenu du corps 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.

Vous devez également définir le type de contenu de la requête. Par exemple, pour charger un fichier, vous devez définir le type de contenu. En règle générale, le type doit être application/octet-stream. Toutefois, vous devez définir le type de contenu en fonction des exigences du point de terminaison.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Spécifie le nombre de fois où suivre les liens de relation si FollowRelLink est utilisé. Une valeur plus petite peut être nécessaire si l’API REST limite en raison d’un trop grand nombre de requêtes. La valeur par défaut est [Int32]::MaxValue. La valeur 0 (zéro) empêche les liens de relation suivants.

Type:Int32
Alias:ML
Position:Named
Valeur par défaut:Int32.MaxValue
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 l’intervalle entre les nouvelles tentatives.

Type:Int32
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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
Valeurs acceptées:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-NoProxy

Indique que l’applet de commande n’utilise pas de proxy pour atteindre la destination. Utilisez-le pour contourner le proxy configuré dans vos paramètres Internet ou spécifié dans l’environnement.

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-OperationTimeoutSeconds

Ce délai d’expiration s’applique aux lectures de données dans un flux, et non à l’heure du flux dans son ensemble. La valeur par défaut, 0, spécifie un délai d’expiration indéfini.

La définition de la valeur sur 30 secondes signifie que tout délai de plus de 30 secondes entre les données du flux met fin à la requête. Un fichier volumineux qui prend plusieurs minutes à télécharger ne se termine pas, sauf si le flux se bloque pendant plus de 30 secondes.

Type:Int32
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-OutFile

Par défaut, Invoke-RestMethod retourne les résultats au pipeline. Lorsque vous utilisez le paramètre OutFile , les résultats sont enregistrés dans le fichier spécifié et ne sont pas retournés au pipeline. Entrez un chemin d’accès et un nom de fichier. Pour envoyer les résultats à un fichier et au pipeline, ajoutez le paramètre PassThru .

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 (').

À compter de PowerShell 7.4, vous pouvez spécifier un chemin d’accès de dossier sans le nom de fichier. Lorsque vous le faites, la commande utilise le nom de fichier du dernier segment de l’URI résolu après toutes les redirections. Lorsque vous spécifiez un chemin d’accès de dossier pour OutFile, vous ne pouvez pas utiliser le paramètre Resume .

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-PassThru

Ce paramètre est valide uniquement lorsque le paramètre OutFile est également utilisé dans la commande. L’intention est d’écrire les résultats dans le fichier et dans le pipeline.

Type:SwitchParameter
Position:Named
Valeur par défaut:No output
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-PreserveHttpMethodOnRedirect

Indique que l’applet de commande doit conserver la méthode de la requête entre les redirections.

Par défaut, l’applet de commande modifie la méthode GET en cas de redirection. La spécification de ce paramètre désactive cette logique pour vous assurer que la méthode prévue peut être utilisée avec la redirection.

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Proxy

Utilise un serveur proxy pour la requête, plutôt que de se connecter directement à la ressource Internet. Entrez l’URI (Uniform Resource Identifier) d’un serveur proxy réseau.

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

Type:Uri
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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.

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

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
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ProxyUseDefaultCredentials

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
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-ResponseHeadersVariable

Crée une variable contenant un dictionnaire d’en-têtes de réponse. Entrez un nom de variable sans symbole de signe dollar ($). Les clés du dictionnaire contiennent les noms de champs et les valeurs de l’en-tête de réponse retourné par le serveur web.

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

Type:String
Alias:RHV
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Resume

Effectue une tentative optimale de reprise du téléchargement d’un fichier partiel. Le paramètre Resume nécessite le paramètre 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 identique à 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 remplacé et l’intégralité du fichier distant est rechargé. Ce comportement est identique à l’utilisation de OutFile sans Resume.

Si le fichier local n’existe pas, le fichier local est créé et le fichier distant entier est téléchargé. Ce comportement est identique à l’utilisation de OutFile sans Resume.

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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. La valeur doit être comprise entre 1 et [int]::MaxValue. Lorsque le code d’échec est 429 et que la réponse inclut la propriété Retry-After dans ses en-têtes, l’applet de commande utilise cette valeur pour l’intervalle de nouvelle tentative, même si ce paramètre est spécifié.

Consultez également le paramètre MaximumRetryCount pour spécifier le nombre de nouvelles tentatives.

Type:Int32
Position:Named
Valeur par défaut:5
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-SessionVariable

Crée une variable contenant la session de requête web. Entrez un nom de variable sans symbole de signe dollar ($).

Lorsque vous spécifiez une variable de session, Invoke-RestMethod 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.

Avant PowerShell 7.4, 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.

À compter de PowerShell 7.4, la session de requête web est persistante tant que les propriétés de la session ne sont pas remplacées dans une requête ultérieure. Lorsqu’elles le sont, l’applet de commande recrée la session avec les nouvelles valeurs. Les sessions persistantes réduisent la surcharge pour les requêtes répétées, ce qui les rend beaucoup plus rapides.

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 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
Alias:SV
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-SkipCertificateCheck

Ignore les vérifications de validation de certificat qui incluent 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.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 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, Headerset UserAgent.

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-SkipHttpErrorCheck

Ce paramètre entraîne l’ignorer des états d’erreur HTTP et continuer à traiter les réponses. Les réponses d’erreur sont écrites dans le pipeline comme si elles ont réussi.

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

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 en tant que tableau de valeurs ou sous forme de 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 sous forme de tabulation sur les valeurs. Vous ne pouvez peut-être pas fournir plusieurs valeurs sur toutes les plateformes.

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

Type:WebSslProtocol
Valeurs acceptées:Default, Tls, Tls11, Tls12, Tls13
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-StatusCodeVariable

Crée une variable contenant un résultat de code d’état HTTP de la requête. Entrez un nom de variable sans symbole de signe dollar ($).

Le paramètre peut identifier les messages de réussite ou les messages d’échec lorsqu’ils sont utilisés avec le paramètre SkipHttpErrorCheck .

Entrez le nom de la variable du paramètre sous la forme d’une chaîne telle que -StatusCodeVariable "scv".

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

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Token

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

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

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

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

Type:SecureString
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 :

  • Segmenté
  • Compresser
  • Deflate
  • GZip
  • Identité
Type:String
Valeurs acceptées:chunked, compress, deflate, gzip, identity
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-UnixSocket

Spécifie le nom du socket Unix auquel se connecter. Ce paramètre est pris en charge sur les systèmes Unix et Windows version 1803 et ultérieures. Pour plus d’informations sur la prise en charge windows des sockets Unix, consultez l’interopérabilité Windows/WSL avec AF_UNIX billet de blog.

Ce paramètre a été ajouté dans PowerShell 7.4.

Type:UnixDomainSocketEndPoint
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Uri

Spécifie l’URI (Uniform Resource Identifier) de la ressource Internet à laquelle la requête web est envoyée. Ce paramètre prend en charge les valeurs HTTP, HTTPS, FTP et FILE.

Ce paramètre est obligatoire. Le nom du paramètre (Uri) est facultatif.

Type:Uri
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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. Lorsqu’elle est utilisée, elle n’a aucun effet sur l’opération de l’applet de commande.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 l’authentification ou les informations d’identification et ne peut pas être pris en charge sur toutes les plateformes.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 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, telle que Chrome, Firefox, InternetExplorer, Opera et Safari.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques: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 requête web, utilisez un paramètre d’applet de commande, tel que 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 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 une connexion dollar, dans la valeur du paramètre SessionVariable d’une Invoke-RestMethod commande. Invoke-RestMethod 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
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

Object

Vous pouvez diriger le corps d’une requête web vers cette applet de commande.

Sorties

Int64

Lorsque la requête retourne un entier, cette applet de commande retourne cet entier.

String

Lorsque la requête retourne une chaîne, cette applet de commande retourne cette chaîne.

XmlDocument

Lorsque la requête retourne du code XML valide, cette applet de commande la renvoie en tant que XmlDocument.

PSObject

Lorsque la requête retourne des chaînes JSON, cette applet de commande retourne un PSObject représentant les données.

Notes

PowerShell inclut les alias suivants pour Invoke-RestMethod:

  • Toutes les plateformes :
    • irm

Certaines fonctionnalités peuvent ne pas être disponibles sur toutes les plateformes.

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é varie en fonction de votre plateforme :

  • Pour Windows: lit la configuration du proxy à partir de variables d’environnement ou, si celles-ci ne sont pas définies, à partir des paramètres de proxy de l’utilisateur.
  • Pour macOS: lit la configuration du proxy à partir de variables d’environnement ou, si celles-ci ne sont pas définies, à partir des paramètres de proxy du système.
  • Pour Linux: lit la configuration du proxy à partir de variables d’environnement ou, dans le cas où elles ne sont pas définies, cette propriété initialise une instance non configurée 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 ou HTTPS_PROXY ne sont pas définis.
  • NO_PROXY : liste de noms d’hôte séparés par des virgules à exclure comme proxy.

PowerShell 7.4 a ajouté la prise en charge de l’algorithme de compression Brotli.