Invoke-RestMethod
Envia um pedido HTTP ou HTTPS para um serviço Web RESTful.
Syntax
Invoke-RestMethod
[-Method <WebRequestMethod>]
[-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]
[-TimeoutSec <Int32>]
[-Headers <IDictionary>]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-RetryIntervalSec <Int32>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-RestMethod
[-Method <WebRequestMethod>]
[-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]
[-TimeoutSec <Int32>]
[-Headers <IDictionary>]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-RetryIntervalSec <Int32>]
-NoProxy
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-RestMethod
-CustomMethod <String>
[-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]
[-TimeoutSec <Int32>]
[-Headers <IDictionary>]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-RetryIntervalSec <Int32>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-RestMethod
-CustomMethod <String>
[-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]
[-TimeoutSec <Int32>]
[-Headers <IDictionary>]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-RetryIntervalSec <Int32>]
-NoProxy
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Description
O Invoke-RestMethod
cmdlet envia pedidos HTTP e HTTPS para serviços Web de Transferência de Estado Representacional (REST) que devolvem dados estruturados de forma avançada.
O PowerShell formatará a resposta com base no tipo de dados. Para um feed RSS ou ATOM, o PowerShell devolve os nós XML de Item ou Entrada. Para JavaScript Object Notation (JSON) ou XML, o PowerShell converte ou anula a serialização do conteúdo em [PSCustomObject]
objetos.
Nota
Quando o ponto final REST devolve vários objetos, os objetos são recebidos como uma matriz. Se encaminhar a saída de Invoke-RestMethod
para outro comando, esta será enviada como um único [Object[]]
objeto. Os conteúdos dessa matriz não são enumerados para o comando seguinte no pipeline.
Este cmdlet é introduzido no Windows PowerShell 3.0.
A partir do PowerShell 7.0, Invoke-RestMethod
suporta a configuração de proxy definida por variáveis de ambiente. Veja a secção Notas deste artigo.
Exemplos
Exemplo 1: Obter o feed RSS do PowerShell
Este exemplo utiliza o Invoke-RestMethod
cmdlet para obter informações do feed RSS do Blogue do PowerShell. O comando utiliza o Format-Table
cmdlet para apresentar os valores das propriedades Título e pubDate de cada blogue numa tabela.
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
Exemplo 2: Executar um pedido POST
Neste exemplo, um utilizador é executado Invoke-RestMethod
para fazer um pedido POST num site da intranet na organização do utilizador.
$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
As credenciais são pedidas e, em seguida, armazenadas no $Cred
e o URL que será acedido é definido em $Url
.
A $Body
variável descreve os critérios de pesquisa, especifica CSV como o modo de saída e especifica um período de tempo para os dados devolvidos que começa há dois dias e termina há um dia. A variável de corpo especifica valores para parâmetros que se aplicam à API REST específica com a qual Invoke-RestMethod
está a comunicar.
O Invoke-RestMethod
comando é executado com todas as variáveis implementadas, especificando um caminho e nome de ficheiro para o ficheiro de saída CSV resultante.
Exemplo 3: seguir ligações de relação
Algumas APIs REST suportam a paginação através de Ligações relacionais por RFC5988. Em vez de analisar o cabeçalho para obter o URL para a página seguinte, pode pedir ao cmdlet para o fazer por si. Este exemplo devolve as duas primeiras páginas de problemas do repositório do GitHub do PowerShell.
$url = 'https://api.github.com/repos/powershell/powershell/issues'
Invoke-RestMethod $url -FollowRelLink -MaximumFollowRelLink 2
Exemplo 4: Submissão simplificada de Multipart/Form-Data
Algumas APIs requerem multipart/form-data
submissões para carregar ficheiros e conteúdos mistos. Este exemplo demonstra como atualizar o perfil de um utilizador.
$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
O formulário de perfil requer estes campos: firstName
, lastName
, , avatar
email
, birthday
e hobbies
. A API espera que seja fornecida uma imagem para a imagem do perfil de utilizador no avatar
campo. A API também aceitará várias hobbies
entradas para serem submetidas no mesmo formulário.
Ao criar a $Form
Tabela Hash, os nomes das chaves são utilizados como nomes de campos de formulário. Por predefinição, os valores da Tabela Hash serão convertidos em cadeias. Se estiver presente um System.IO.FileInfo
valor, o conteúdo do ficheiro será submetido. Se estiver presente uma coleção, como matrizes ou listas, o campo de formulário será submetido várias vezes.
Ao utilizar Get-Item
a avatar
chave, o FileInfo
objeto será definido como o valor. O resultado é que os dados da imagem para jdoe.png
serão submetidos.
Ao fornecer uma lista à hobbies
chave, o hobbies
campo estará presente nas submissões uma vez para cada item de lista.
Exemplo 5: Passar vários cabeçalhos
Muitas vezes, as APIs requerem cabeçalhos transmitidos para autenticação ou validação. Este exemplo demonstra como transmitir vários cabeçalhos de uma hash-table
para uma API REST.
$headers = @{
'userId' = 'UserIDValue'
'token' = 'TokenValue'
}
Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body
Exemplo 6: Enumerar itens devolvidos no pipeline
O GitHub devolve vários objetos a uma matriz. Se encaminhar a saída para outro comando, este será enviado como um único [Object[]]
objeto.
Para enumerar os objetos no pipeline, encaminhe os resultados para Write-Output
ou embrulhe o cmdlet em parênteses. O exemplo seguinte conta o número de objetos devolvidos pelo GitHub. Em seguida, conta o número de objetos enumerados para o 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
Exemplo 7: Ignorar Validação de Cabeçalho
Por predefinição, o Invoke-RestMethod
cmdlet valida os valores de cabeçalhos conhecidos que têm um formato de valor definido por standardards. O exemplo seguinte mostra como esta validação pode gerar um erro e como pode utilizar o parâmetro SkipHeaderValidation para evitar validar valores para pontos finais que toleram valores formatados inválidos.
$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 é um serviço que devolve informações sobre pedidos Web e respostas para resolução de problemas. A $Uri
variável é atribuída ao /headers
ponto final do serviço, que devolve os cabeçalhos de um pedido como o conteúdo na respetiva resposta.
O If-Match
cabeçalho do pedido é definido na secção RFC-7232 3.1 e requer que o valor desse cabeçalho seja definido com aspas adjacentes. A $InvalidHeaders
variável é atribuída a uma tabela hash onde o valor de If-Match
é inválido porque está definido como 12345
em vez de "12345"
.
Chamar Invoke-RestMethod
com os cabeçalhos inválidos devolve um erro ao informar que o valor formatado é inválido. O pedido não é enviado para o ponto final.
Chamar Invoke-RestMethod
com o parâmetro SkipHeaderValidation ignora a falha de validação e envia o pedido para o ponto final. Uma vez que o ponto final tolera valores de cabeçalho não conformes, o cmdlet devolve o objeto de resposta sem erros.
Exemplo 8: Enviar um pedido com HTTP 2.0
Este exemplo consulta o problema do GitHub com o protocolo HTTP 2.0.
$uri = 'https://api.github.com/repos/microsoftdocs/powershell-docs/issues'
Invoke-RestMethod -Uri $uri -HttpVersion 2.0 -SkipCertificateCheck
Parâmetros
-AllowUnencryptedAuthentication
Permite o envio de credenciais e segredos através de ligações não encriptadas. Por predefinição, fornecer credenciais ou qualquer opção de Autenticação com um Uri que não comece por https://
resultará num erro e o pedido irá abortar para impedir a comunicação não intencional de segredos em texto simples através de ligações não encriptadas. Para substituir este comportamento por sua conta e risco, forneça o parâmetro AllowUnencryptedAuthentication .
Aviso
A utilização deste parâmetro não é segura e não é recomendada. É fornecido apenas para compatibilidade com sistemas legados que não podem fornecer ligações encriptadas. Utilize por sua conta e risco.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Especifica o tipo de autenticação explícita a utilizar para o pedido. A predefinição é Nenhuma. O parâmetro Autenticação não pode ser utilizado com o parâmetro UseDefaultCredentials .
Opções de Autenticação Disponíveis:
None
: esta é a opção predefinida quando a Autenticação não é fornecida. Não será utilizada autenticação explícita.Basic
: requer credenciais. As credenciais serão utilizadas para enviar um cabeçalho rfc 7617 Basic AuthenticationAuthorization: Basic
no formato debase64(user:password)
.Bearer
: requer o parâmetro Token . Envia um cabeçalho RFC 6750Authorization: Bearer
com o token fornecido.OAuth
: requer o parâmetro Token . Envia um cabeçalho RFC 6750Authorization: Bearer
com o token fornecido.
Fornecer Autenticação substitui quaisquer Authorization
cabeçalhos fornecidos a Cabeçalhos ou incluídos na WebSession.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | WebAuthenticationType |
Accepted values: | None, Basic, Bearer, OAuth |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Body
Especifica o corpo do pedido. O corpo é o conteúdo do pedido que segue os cabeçalhos.
Também pode encaminhar um valor do corpo para Invoke-RestMethod
.
O parâmetro Corpo pode ser utilizado para especificar uma lista de parâmetros de consulta ou especificar o conteúdo da resposta.
Quando a entrada é um pedido POST e o corpo é uma Cadeia, o valor à esquerda do primeiro sinal de igual (=
) é definido como uma chave nos dados do formulário e o texto restante é definido como o valor. Para especificar várias chaves, utilize um objeto IDictionary , como uma tabela hash, para o Corpo.
Quando a entrada é um pedido GET e o corpo é um IDictionary (normalmente, uma tabela hash), o corpo é adicionado ao URI como parâmetros de consulta. Para outros tipos de pedido (como PATCH), o corpo é definido como o valor do corpo do pedido no formato padrão name=value
com os valores codificados por URL.
Quando a entrada é uma System.Xml. O objeto XmlNode e a declaração XML especificam uma codificação, que a codificação é utilizada para os dados no pedido, a menos que seja substituída pelo parâmetro ContentType .
Quando o corpo é um formulário ou é a saída de outra Invoke-WebRequest
chamada, o PowerShell define o conteúdo do pedido para os campos de formulário.
O parâmetro Body também pode aceitar um objeto System.Net.Http.MultipartFormDataContent . Isto irá facilitar os multipart/form-data
pedidos. Quando um objeto MultipartFormDataContent é fornecido para o Corpo, todos os cabeçalhos relacionados com conteúdo fornecidos aos parâmetrosContentType, Headers ou WebSession serão substituídos pelos cabeçalhos de conteúdo do MultipartFormDataContent
objeto. Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | Object |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Certificate
Especifica o certificado de cliente utilizado para um pedido Web seguro. Introduza uma variável que contenha um certificado ou um comando ou expressão que obtenha o certificado.
Para localizar um certificado, utilize Get-PfxCertificate
ou utilize o Get-ChildItem
cmdlet na unidade Certificado (Cert:
). Se o certificado não for válido ou não tiver autoridade suficiente, o comando falhará.
Type: | X509Certificate |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CertificateThumbprint
Especifica o certificado de chave pública digital (X509) de uma conta de utilizador que tem permissão para enviar o pedido. Introduza o thumbprint do certificado.
Os certificados são utilizados na autenticação baseada em certificados de cliente. Só podem ser mapeadas para contas de utilizador locais; não funcionam com contas de domínio.
Para obter um thumbprint de certificado, utilize o Get-Item
comando ou Get-ChildItem
na unidade do PowerShell Cert:
.
Nota
Atualmente, esta funcionalidade só é suportada em plataformas de SO Windows.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContentType
Especifica o tipo de conteúdo do pedido Web.
Se o valor de ContentType contiver o formato de codificação (como charset
), o cmdlet utiliza esse formato para codificar o corpo do pedido Web. Se o ContentType não especificar um formato de codificação, é utilizado o formato de codificação predefinido. Um exemplo de um ContentType com um formato de codificação é text/plain; charset=iso-8859-5
, que especifica o alfabeto latino/cirílico .
Se este parâmetro for omitido e o método de pedido for POST, Invoke-RestMethod
define o tipo de conteúdo como application/x-www-form-urlencoded
. Caso contrário, o tipo de conteúdo não é especificado na chamada.
ContentType será substituído quando um MultipartFormDataContent
objeto for fornecido para o Corpo.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Especifica uma conta de utilizador que tem permissão para enviar o pedido. A predefinição é o utilizador atual.
Escreva um nome de utilizador, como User01 ou Domain01\User01, ou introduza um objeto PSCredential gerado pelo Get-Credential
cmdlet .
As credenciais podem ser utilizadas individualmente ou em conjunto com determinadas opções de parâmetros de Autenticação . Quando utilizado apenas, só fornecerá credenciais para o servidor remoto se o servidor remoto enviar um pedido de desafio de autenticação. Quando utilizadas com as opções de Autenticação , as credenciais serão enviadas explicitamente.
As credenciais são armazenadas num objeto PSCredential e a palavra-passe é armazenada como secureString.
Nota
Para obter mais informações sobre a proteção de dados SecureString , consulte Quão seguro é SecureString?.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CustomMethod
Especifica o método personalizado utilizado para o pedido Web. Isto pode ser utilizado com o Método de Pedido exigido pelo ponto final não é uma opção disponível no Método. O método e o CustomMethod não podem ser utilizados em conjunto.
Exemplo:
Invoke-RestMethod -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'
Isto faz um TEST
pedido HTTP à API.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | String |
Aliases: | CM |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DisableKeepAlive
Indica que o cmdlet define o valor KeepAlive no cabeçalho HTTP como Falso. Por predefinição, KeepAlive é Verdadeiro. KeepAlive estabelece uma ligação persistente ao servidor para facilitar os pedidos subsequentes.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FollowRelLink
Indica que o cmdlet deve seguir as ligações de relação.
Algumas APIs REST suportam a paginação através de Ligações de Relação por RFC5988. Em vez de analisar o cabeçalho para obter o URL para a página seguinte, pode fazer com que o cmdlet o faça por si. Para definir quantas vezes deve seguir as ligações de relação, utilize o parâmetro MaximumFollowRelLink .
Ao utilizar este parâmetro, o cmdlet devolve uma coleção de páginas de resultados. Cada página de resultados pode conter vários itens de resultado.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | SwitchParameter |
Aliases: | FL |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Form
Converte um dicionário numa multipart/form-data
submissão. O formulário não pode ser utilizado com o Corpo.
Se ContentType for ignorado.
As chaves do dicionário serão utilizadas como os nomes dos campos de formulário. Por predefinição, os valores de formulário serão convertidos em valores de cadeia.
Se o valor for um objeto System.IO.FileInfo , os conteúdos do ficheiro binário serão submetidos.
O nome do ficheiro será submetido como .filename
O MIME será definido como application/octet-stream
. Get-Item
pode ser utilizado para simplificar o fornecimento do objeto System.IO.FileInfo .
$Form = @{ resume = Get-Item 'c:\Users\jdoe\Documents\John Doe.pdf' }
Se o valor for um tipo de coleção, como uma Matriz ou Uma Lista, o campo para será submetido várias vezes. Os valores da lista serão tratados como cadeias por predefinição. Se o valor for um objeto System.IO.FileInfo , os conteúdos do ficheiro binário serão submetidos. As coleções aninhadas não são suportadas.
$Form = @{ tags = 'Vacation', 'Italy', '2017' pictures = Get-ChildItem 'c:\Users\jdoe\Pictures\2017-Italy' }
No exemplo acima, o tags
campo será fornecido três vezes no formulário, uma vez para cada de Vacation
, Italy
e 2017
. O pictures
campo também será submetido uma vez para cada ficheiro na 2017-Italy
pasta. Os conteúdos binários dos ficheiros nessa pasta serão submetidos como valores.
Esta funcionalidade foi adicionada no PowerShell 6.1.0.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Headers
Especifica os cabeçalhos do pedido Web. Introduza uma tabela hash ou um dicionário.
Os cabeçalhos relacionados com conteúdo, como Content-Type
, por exemplo, são substituídos quando um MultipartFormDataContent
objeto é fornecido para o Corpo.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HttpVersion
Especifica a versão HTTP utilizada para o pedido. A predefinição é 1.1
.
Os valores válidos são:
- 1.0
- 1.1
- 2.0
- 3.0
Type: | Version |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InFile
Obtém o conteúdo do pedido Web a partir de um ficheiro.
Introduza um caminho e um nome de ficheiro. Se omitir o caminho, a predefinição é a localização atual.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaximumFollowRelLink
Especifica o número de vezes que deve seguir as ligações de relação se a opção FollowRelLink for utilizada. Poderá ser necessário um valor mais pequeno se a API REST limitar devido a demasiados pedidos. O valor predefinido é [Int32]::MaxValue
. Um valor de 0 (zero) impede as seguintes ligações relacionais.
Type: | Int32 |
Aliases: | ML |
Position: | Named |
Default value: | Int32.MaxValue |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaximumRedirection
Especifica quantas vezes o PowerShell redireciona uma ligação para um URI (Uniform Resource Identifier) alternativo antes de a ligação falhar. O valor predefinido é 5. Um valor de 0 (zero) impede todo o redirecionamento.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaximumRetryCount
Especifica quantas vezes o PowerShell tenta uma ligação quando é recebido um código de falha entre 400 e 599, inclusive ou 304. Veja também o parâmetro RetryIntervalSec para especificar o número de repetições.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Method
Especifica o método utilizado para o pedido Web. Os valores aceitáveis para este parâmetro são:
Default
Delete
Get
Head
Merge
Options
Patch
Post
Put
Trace
O parâmetro CustomMethod pode ser utilizado para Métodos de Pedido não listados acima.
Type: | WebRequestMethod |
Accepted values: | Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoProxy
Indica que o cmdlet não utilizará um proxy para chegar ao destino.
Quando precisar de ignorar o proxy configurado no Internet Explorer ou um proxy especificado no ambiente, utilize este comutador.
Este parâmetro foi introduzido no PowerShell 6.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutFile
Guarda o corpo da resposta no ficheiro de saída especificado. Introduza um caminho e um nome de ficheiro. Se omitir o caminho, a predefinição é a localização atual. O nome é tratado como um caminho literal. Os nomes que contêm parênteses retos ([]
) têm de estar entre plicas ('
).
Por predefinição, Invoke-RestMethod
devolve os resultados ao pipeline.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Este parâmetro só é válido quando o parâmetro OutFile também é utilizado no comando . A intenção é que os resultados sejam escritos no ficheiro e no pipeline.
Nota
Quando utiliza o parâmetro PassThru , o resultado é escrito no pipeline, mas o ficheiro não é criado. Para obter mais informações, veja Problema do PowerShell #15409.
Type: | SwitchParameter |
Position: | Named |
Default value: | No output |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PreserveAuthorizationOnRedirect
Indica que o cmdlet deve preservar o Authorization
cabeçalho, quando estiver presente, entre redirecionamentos.
Por predefinição, o cmdlet retira o Authorization
cabeçalho antes de redirecionar. Especificar este parâmetro desativa esta lógica para os casos em que o cabeçalho tem de ser enviado para a localização de redirecionamento.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Proxy
Utiliza um servidor proxy para o pedido, em vez de ligar diretamente ao recurso da Internet. Introduza o Uniform Resource Identifier (URI) de um servidor proxy de rede.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | Uri |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ProxyCredential
Especifica uma conta de utilizador que tem permissão para utilizar o servidor proxy especificado pelo parâmetro Proxy . A predefinição é o utilizador atual.
Escreva um nome de utilizador, como User01 ou Domain01\User01, User@Domain.Comou introduza um PSCredential
objeto, como um gerado pelo Get-Credential
cmdlet.
Este parâmetro só é válido quando o parâmetro Proxy também é utilizado no comando . Não pode utilizar os parâmetros ProxyCredential e ProxyUseDefaultCredentials no mesmo comando.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ProxyUseDefaultCredentials
Indica que o cmdlet utiliza as credenciais do utilizador atual para aceder ao servidor proxy especificado pelo parâmetro Proxy .
Este parâmetro só é válido quando o parâmetro Proxy também é utilizado no comando . Não pode utilizar os parâmetros ProxyCredential e ProxyUseDefaultCredentials no mesmo comando.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ResponseHeadersVariable
Cria uma variável que contém um Dicionário de Cabeçalhos de Resposta. Introduza um nome de variável sem o símbolo de cifrão ($
). As chaves do dicionário contêm os nomes de campo e os valores do Cabeçalho de Resposta devolvidos pelo servidor Web.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | String |
Aliases: | RHV |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Resume
Efetua uma melhor tentativa de retomar a transferência de um ficheiro parcial. O parâmetro Resume requer o parâmetro OutFile .
O currículo só funciona com o tamanho do ficheiro local e do ficheiro remoto e não efetua qualquer outra validação de que o ficheiro local e o ficheiro remoto são os mesmos.
Se o tamanho do ficheiro local for inferior ao tamanho do ficheiro remoto, o cmdlet tentará retomar a transferência do ficheiro e acrescentar os restantes bytes ao final do ficheiro.
Se o tamanho do ficheiro local for o mesmo que o tamanho do ficheiro remoto, não é tomada nenhuma ação e o cmdlet assume que a transferência já foi concluída.
Se o tamanho do ficheiro local for superior ao tamanho do ficheiro remoto, o ficheiro local será substituído e todo o ficheiro remoto será completamente transferido. Este comportamento é o mesmo que utilizar OutFile sem Currículo.
Se o servidor remoto não suportar a retoma da transferência, o ficheiro local será substituído e todo o ficheiro remoto será completamente transferido. Este comportamento é o mesmo que utilizar OutFile sem Currículo.
Se o ficheiro local não existir, o ficheiro local será criado e todo o ficheiro remoto será completamente transferido. Este comportamento é o mesmo que utilizar OutFile sem Currículo.
Esta funcionalidade foi adicionada no PowerShell 6.1.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RetryIntervalSec
Especifica o intervalo entre repetições para a ligação quando é recebido um código de falha entre 400 e 599, inclusive ou 304. Veja também o parâmetro MaximumRetryCount para especificar o número de repetições. O valor tem de ser entre 1
e [int]::MaxValue
.
Type: | Int32 |
Position: | Named |
Default value: | 5 |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SessionVariable
Cria uma variável que contém a sessão de pedido Web. Introduza um nome de variável sem o símbolo de cifrão ($
).
Quando especifica uma variável de sessão, Invoke-RestMethod
cria um objeto de sessão de pedido Web e atribui-o a uma variável com o nome especificado na sua sessão do PowerShell. Pode utilizar a variável na sua sessão assim que o comando for concluído.
Antes do PowerShell 7.4, a sessão de pedido Web não é uma ligação persistente. É um objeto que contém informações sobre a ligação e o pedido, incluindo cookies, credenciais, o valor máximo de redirecionamento e a cadeia de agente do utilizador. Pode utilizá-lo para partilhar estados e dados entre pedidos Web.
A partir do PowerShell 7.4, a sessão de pedido Web é persistente, desde que as propriedades da sessão não sejam substituídas num pedido subsequente. Quando estiverem, o cmdlet recria a sessão com os novos valores. As sessões persistentes reduzem a sobrecarga dos pedidos repetidos, tornando-os muito mais rápidos.
Para utilizar a sessão de pedido Web em pedidos Web subsequentes, especifique a variável de sessão no valor do parâmetro WebSession . O PowerShell utiliza os dados no objeto de sessão de pedido Web ao estabelecer a nova ligação. Para substituir um valor na sessão de pedido Web, utilize um parâmetro de cmdlet, como UserAgent ou Credential. Os valores dos parâmetros têm precedência sobre os valores na sessão de pedido Web.
Não pode utilizar os parâmetros SessionVariable e WebSession no mesmo comando.
Type: | String |
Aliases: | SV |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipCertificateCheck
Ignora as verificações de validação de certificados que incluem todas as validações, como expiração, revogação, autoridade de raiz fidedigna, etc.
Aviso
A utilização deste parâmetro não é segura e não é recomendada. Este comutador destina-se apenas a ser utilizado em anfitriões conhecidos com um certificado autoassinado para fins de teste. Utilize por sua conta e risco.
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipHeaderValidation
Indica que o cmdlet deve adicionar cabeçalhos ao pedido sem validação.
Este comutador deve ser utilizado para sites que requerem valores de cabeçalho que não estejam em conformidade com as normas. Especificar este comutador desativa a validação para permitir que o valor seja transmitido desmarcado. Quando especificado, todos os cabeçalhos são adicionados sem validação.
Esta ação irá desativar a validação dos valores transmitidos para os parâmetros ContentType, Headers e UserAgent .
Esta funcionalidade foi adicionada no PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipHttpErrorCheck
Este parâmetro faz com que o cmdlet ignore os estados de erro HTTP e continue a processar respostas. As respostas de erro são escritas no pipeline tal como se tivessem sido bem-sucedidas.
Este parâmetro foi introduzido no PowerShell 7.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SslProtocol
Define os protocolos SSL/TLS que são permitidos para o pedido Web. Por predefinição, são permitidos protocolos SSL/TLS suportados pelo sistema. O SslProtocol permite limitar protocolos específicos para fins de conformidade.
Estes valores são definidos como uma enumeração baseada em sinalizador. Pode combinar múltiplos valores para definir vários sinalizadores com este parâmetro. Os valores podem ser transmitidos para o parâmetro SslProtocol como uma matriz de valores ou como uma cadeia separada por vírgulas desses valores. O cmdlet irá combinar os valores com uma operação binary-OR. Transmitir valores como uma matriz é a opção mais simples e também lhe permite utilizar a conclusão de separadores nos valores. Poderá não conseguir fornecer vários valores em todas as plataformas.
Nota
Em plataformas não Windows, poderá não ser possível fornecer Tls
ou Tls12
como opção. O suporte para Tls13
não está disponível em todos os sistemas operativos e terá de ser verificado por sistema operativo.
Esta funcionalidade foi adicionada no PowerShell 6.0.0 e o suporte para Tls13
foi adicionado ao PowerShell 7.1.
Type: | WebSslProtocol |
Accepted values: | Default, Tls, Tls11, Tls12, Tls13 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-StatusCodeVariable
Cria uma variável que contém um resultado de código de estado HTTP do pedido. Introduza um nome de variável sem o símbolo de cifrão ($
).
O parâmetro pode identificar mensagens de êxito ou mensagens de falha quando utilizado com o parâmetro SkipHttpErrorCheck .
Introduza o nome da variável do parâmetro como uma cadeia, como -StatusCodeVariable "scv"
.
Este parâmetro foi introduzido no PowerShell 7.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TimeoutSec
Especifica quanto tempo o pedido pode estar pendente antes de exceder o limite de tempo. Introduza um valor em segundos. O valor predefinido, 0, especifica um tempo limite indefinido.
Uma consulta DNS (Domain Name System) pode demorar até 15 segundos a devolver ou exceder o tempo limite. Se o seu pedido contiver um nome de anfitrião que necessite de resolução e definir TimeoutSec para um valor superior a zero, mas inferior a 15 segundos, pode demorar 15 segundos ou mais até que seja emitida uma WebException e o seu pedido excede o limite de tempo.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Token
O token OAuth ou Bearer a incluir no pedido. O token é obrigatório por determinadas opções de Autenticação . Não pode ser utilizado de forma independente.
O token utiliza um SecureString
que contém o token. Para fornecer o token, utilize manualmente o seguinte:
Invoke-RestMethod -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)
Este parâmetro foi introduzido no PowerShell 6.0.
Type: | SecureString |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TransferEncoding
Especifica um valor para o cabeçalho de resposta HTTP de codificação de transferência. Os valores aceitáveis para este parâmetro são:
- Segmentado
- Comprimir
- Esvaziar
- GZip
- Identidade
Type: | String |
Accepted values: | chunked, compress, deflate, gzip, identity |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Uri
Especifica o Uniform Resource Identifier (URI) do recurso da Internet para o qual o pedido Web é enviado. Este parâmetro suporta valores HTTP, HTTPS, FTP e FILE.
Este parâmetro é necessário. O nome do parâmetro (Uri) é opcional.
Type: | Uri |
Position: | 0 |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseBasicParsing
Este parâmetro foi preterido. A partir do PowerShell 6.0.0, todos os pedidos Web utilizam apenas análise básica. Este parâmetro está incluído apenas para retrocompatibilidade e qualquer utilização do mesmo não terá qualquer efeito na operação do cmdlet.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseDefaultCredentials
Indica que o cmdlet utiliza as credenciais do utilizador atual para enviar o pedido Web. Isto não pode ser utilizado com Autenticação ou Credencial e pode não ser suportado em todas as plataformas.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UserAgent
Especifica uma cadeia de agente de utilizador para o pedido Web.
O agente de utilizador predefinido é semelhante a Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0
com ligeiras variações para cada sistema operativo e plataforma.
Para testar um site com a cadeia de agente de utilizador padrão que é utilizada pela maioria dos browsers de Internet, utilize as propriedades da classe PSUserAgent , como Chrome, FireFox, InternetExplorer, Opera e Safari.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WebSession
Especifica uma sessão de pedido Web. Introduza o nome da variável, incluindo o sinal de dólar ($
).
Para substituir um valor na sessão de pedido Web, utilize um parâmetro de cmdlet, como UserAgent ou Credential. Os valores dos parâmetros têm precedência sobre os valores na sessão do pedido Web. Os cabeçalhos relacionados com conteúdo, como Content-Type
, também serão substituídos quando for fornecido um objeto MultipartFormDataContent para Body.
Ao contrário de uma sessão remota, a sessão de pedido Web não é uma ligação persistente. É um objeto que contém informações sobre a ligação e o pedido, incluindo cookies, credenciais, o valor máximo de redirecionamento e a cadeia de agente do utilizador. Pode utilizá-lo para partilhar o estado e os dados entre pedidos Web.
Para criar uma sessão de pedido Web, introduza um nome de variável, sem um sinal de dólar, no valor do parâmetro SessionVariable de um Invoke-RestMethod
comando. Invoke-RestMethod
cria a sessão e guarda-a na variável. Nos comandos subsequentes, utilize a variável como o valor do parâmetro WebSession .
Não pode utilizar os parâmetros SessionVariable e WebSession no mesmo comando.
Type: | WebRequestSession |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entradas
Pode encaminhar o corpo de um pedido Web para este cmdlet.
Saídas
Quando o pedido devolve um número inteiro, este cmdlet devolve esse número inteiro.
Quando o pedido devolve uma cadeia, este cmdlet devolve essa cadeia.
Quando o pedido devolve XML válido, este cmdlet devolve-o como um XmlDocument.
PSObject
Quando o pedido devolve cadeias JSON, este cmdlet devolve um PSObject que representa os dados.
Notas
O PowerShell inclui os seguintes aliases para Invoke-RestMethod
:
- Todas as plataformas:
irm
Algumas funcionalidades podem não estar disponíveis em todas as plataformas.
Devido às alterações no .NET Core 3.1, o PowerShell 7.0 e superior utilizam a propriedade HttpClient.DefaultProxy para determinar a configuração do proxy.
O valor desta propriedade é regras diferentes consoante a sua plataforma:
- Para Windows: lê a configuração do proxy a partir de variáveis de ambiente ou, se estas não estiverem definidas, a partir das definições de proxy do utilizador.
- Para macOS: lê a configuração do proxy a partir de variáveis de ambiente ou, se estas não estiverem definidas, a partir das definições de proxy do sistema.
- Para Linux: lê a configuração do proxy a partir de variáveis de ambiente ou, caso não estejam definidas, esta propriedade inicializa uma instância não configurada que ignora todos os endereços.
As variáveis de ambiente utilizadas para DefaultProxy
inicialização em plataformas baseadas em Windows e Unix são:
HTTP_PROXY
: o nome do anfitrião ou endereço IP do servidor proxy utilizado em pedidos HTTP.HTTPS_PROXY
: o nome do anfitrião ou endereço IP do servidor proxy utilizado em pedidos HTTPS.ALL_PROXY
: o nome do anfitrião ou endereço IP do servidor proxy utilizado nos pedidos HTTP e HTTPS no casoHTTP_PROXY
de ouHTTPS_PROXY
não estarem definidos.NO_PROXY
: uma lista separada por vírgulas de nomes de anfitrião que devem ser excluídos do proxying.
Ligações Relacionadas
Comentários
Submeter e ver comentários