Dela via


Invoke-RestMethod

Skickar en HTTP- eller HTTPS-begäran till en RESTful-webbtjänst.

Syntax

Default (Standard)

Invoke-RestMethod
    [-Method <WebRequestMethod>]
    [-UseBasicParsing]
    [-Uri] <Uri>
    [-WebSession <WebRequestSession>]
    [-SessionVariable <String>]
    [-Credential <PSCredential>]
    [-UseDefaultCredentials]
    [-CertificateThumbprint <String>]
    [-Certificate <X509Certificate>]
    [-UserAgent <String>]
    [-DisableKeepAlive]
    [-TimeoutSec <Int32>]
    [-Headers <IDictionary>]
    [-MaximumRedirection <Int32>]
    [-Proxy <Uri>]
    [-ProxyCredential <PSCredential>]
    [-ProxyUseDefaultCredentials]
    [-Body <Object>]
    [-ContentType <String>]
    [-TransferEncoding <String>]
    [-InFile <String>]
    [-OutFile <String>]
    [-PassThru]
    [<CommonParameters>]

Description

Cmdleten Invoke-RestMethod skickar HTTP- och HTTPS-begäranden till REST-webbtjänster (Representational State Transfer) som returnerar omfattande strukturerade data.

PowerShell formaterar svaret baserat på datatypen. För en RSS- eller ATOM-feed returnerar PowerShell XML-noderna för objekt eller poster. För JavaScript Object Notation (JSON) eller XML konverterar Eller deserialiserar PowerShell innehållet till [pscustomobject] objekt. Kommentarer tillåts inte i JSON-data.

Varning

Som standard Invoke-RestMethod parsar innehållet på webbsidan. Skriptkod på webbsidan kan köras när sidan parsas. Använd växeln -UseBasicParsing för att undvika körning av skriptkod.

Den här cmdleten introduceras i Windows PowerShell 3.0. Det här kommandot kan köras med hjälp av aliaset irm .

Exempel

Exempel 1: Hämta PowerShell RSS-feeden

Invoke-RestMethod -Uri https://devblogs.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

Det här kommandot använder cmdleten Invoke-RestMethod för att hämta information från POWERShell-bloggens RSS-feed. Kommandot använder cmdleten Format-Table för att visa värdena för Title och pubDate egenskaper för varje blogg i en tabell.

Exempel 2

I följande exempel kör en användare Invoke-RestMethod för att utföra en POST-begäran på en intranätwebbplats i användarens organisation.

$Cred = Get-Credential

# Next, allow the use of self-signed SSL certificates.

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

# Create variables to store the values consumed by the Invoke-RestMethod command.
# The search variable contents are later embedded in the body variable.

$Server = 'server.contoso.com'
$Url = "https://${server}:8089/services/search/jobs/export"
$Search = "search index=_internal | reverse | table index,host,source,sourcetype,_raw"

# The cmdlet handles URL encoding. The body variable describes the search criteria, specifies CSV as
# the output mode, and specifies a time period for returned data that starts two days ago and ends
# one day ago. The body variable specifies values for parameters that apply to the particular REST
# API with which Invoke-RestMethod is communicating.

$Body = @{
    search = $Search
    output_mode = "csv"
    earliest_time = "-2d@d"
    latest_time = "-1d@d"
}

# Now, run the Invoke-RestMethod command with all variables in place, specifying a path and file
# name for the resulting CSV output file.

Invoke-RestMethod -Method Post -Uri $url -Credential $Cred -Body $body -OutFile output.csv

{"preview":true,"offset":0,"result":{"sourcetype":"contoso1","count":"9624"}}

{"preview":true,"offset":1,"result":{"sourcetype":"contoso2","count":"152"}}

{"preview":true,"offset":2,"result":{"sourcetype":"contoso3","count":"88494"}}

{"preview":true,"offset":3,"result":{"sourcetype":"contoso4","count":"15277"}}

Exempel 3: Skicka flera rubriker

Det här exemplet visar hur du kan överföra flera rubriker från en hash-table till ett REST-API.

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

API:er kräver ofta skickade huvuden för autentisering, validering osv.

Exempel 3: Skicka formulärdata

När brödtexten är ett formulär, eller om det är utdata från ett annat Invoke-WebRequest-anrop, anger PowerShell begärandeinnehållet till formulärfälten.

Till exempel:

$R = Invoke-WebRequest https://website.com/login.aspx
$R.Forms[0].Name = "MyName"
$R.Forms[0].Password = "MyPassword"
Invoke-RestMethod https://website.com/service.aspx -Body $R.Forms[0]

Exempel 4: Räkna upp returnerade objekt i pipelinen

GitHub returnerar flera objekt som en matris. Om du skickar utdata till ett annat kommando skickas det som ett enda [Object[]]objekt.

Om du vill räkna upp objekten i pipelinen dirigerar du resultatet till Write-Output eller omsluter cmdleten inom parenteser. I följande exempel räknas antalet objekt som returneras av GitHub. Räknar sedan antalet objekt som räknas upp till pipelinen.

$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

Parametrar

-Body

Anger innehållet i begäran. Kroppen är innehållet i begäran som följer efter rubrikerna. Du kan också skicka ett kroppsvärde till Invoke-RestMethod.

Body-parametern kan användas för att ange en lista med frågeparametrar eller ange innehållet i .

begäran. När indata är en GET-begäran och brödtexten är en IDictionary (vanligtvis en hash-tabell) läggs brödtexten till i URI:n som frågeparametrar. För andra typer av begäranden (till exempel POST) anges brödtexten som värdet för begärandetexten i standardformatet name=value.

Varning

De utförliga utdata från en POST-brödtext slutar med with -1-byte payload, även om brödtextens storlek både är känd och skickas i Content-Length HTTP-huvud.

Parameteregenskaper

Typ:Object
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:True
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Certificate

Anger det klientcertifikat som används för en säker webbbegäran. Ange en variabel som innehåller ett certifikat eller ett kommando eller uttryck som hämtar certifikatet.

Om du vill hitta ett certifikat använder du Get-PfxCertificate eller Get-ChildItem-cmdleten på Certifikat-enheten (Cert:). Om certifikatet inte är giltigt eller inte har tillräcklig behörighet misslyckas kommandot.

Parameteregenskaper

Typ:X509Certificate
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-CertificateThumbprint

Anger det digitala offentliga nyckelcertifikatet (X509) för ett användarkonto som har behörighet att skicka begäran. Ange certifikatets tumavtryck.

Certifikat används i klientcertifikatbaserad autentisering. Certifikat kan bara mappas till lokala användarkonton, inte domänkonton.

Om du vill se certifikatets tumavtryck använder du kommandot Get-Item eller Get-ChildItem för att hitta certifikatet i Cert:\CurrentUser\My.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-ContentType

Anger innehållstypen för webbbegäran.

Om värdet för ContentType innehåller kodningsformatet (som charset) använder cmdleten formatet för att koda brödtexten i webbbegäran. Om ContentType- inte anger något kodningsformat används standardkodningsformatet i stället. Ett exempel på en ContentType- med ett kodningsformat är text/plain; charset=iso-8859-5, som anger alfabetet latinsk/kyrillisk.

Om du utelämnar parametern kan innehållstypen vara annorlunda baserat på den HTTP-metod som du använder:

  • För en POST-metod är innehållstypen application/x-www-form-urlencoded
  • För en PUT-metod är innehållstypen application/json
  • För andra metoder anges inte innehållstypen i begäran

Om du använder parametern InFile för att ladda upp en fil bör du ange innehållstypen. Vanligtvis ska typen vara application/octet-stream. Du måste dock ange innehållstypen baserat på slutpunktens krav.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Credential

Anger ett användarkonto som har behörighet att skicka begäran. Standardvärdet är den aktuella användaren.

Ange ett användarnamn, till exempel User01 eller Domain01\User01, eller ange ett PSCredential- objekt som genereras av cmdleten Get-Credential.

Autentiseringsuppgifter lagras i ett PSCredential--objekt och lösenordet lagras som en SecureString-.

Anmärkning

Mer information om SecureString dataskydd finns i Hur säker är SecureString?.

Parameteregenskaper

Typ:PSCredential
Standardvärde:Current user
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-DisableKeepAlive

Anger värdet KeepAlive i HTTP-huvudet till False. Som standard är KeepAlive sant. KeepAlive upprättar en beständig anslutning till servern för att underlätta efterföljande begäranden.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:False
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Headers

Anger sidhuvudena för webbbegäran. Ange en hashtabell eller ordlista.

Om du vill ange UserAgent-huvuden använder du parametern UserAgent. Du kan inte använda den här parametern för att ange UserAgent- eller cookierubriker.

Parameteregenskaper

Typ:IDictionary
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-InFile

Hämtar innehållet i webbbegärandetexten från en fil. Ange en sökväg och ett filnamn. Om du utelämnar sökvägen är standardinställningen den aktuella platsen.

Du måste också ange innehållstypen för begäran. Om du till exempel vill ladda upp en fil bör du ange innehållstypen. Vanligtvis ska typen vara application/octet-stream. Du måste dock ange innehållstypen baserat på slutpunktens krav.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-MaximumRedirection

Avgör hur många gånger Windows PowerShell omdirigerar en anslutning till en alternativ URI (Uniform Resource Identifier) innan anslutningen misslyckas. Standardvärdet är 5. Värdet 0 (noll) förhindrar all omdirigering.

Parameteregenskaper

Typ:Int32
Standardvärde:5
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Method

Anger den metod som används för webbbegäran. De godtagbara värdena för den här parametern är:

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

Parameteregenskaper

Typ:WebRequestMethod
Standardvärde:Default
Godkända värden:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-OutFile

Sparar svarstexten i den angivna utdatafilen. Ange en sökväg och ett filnamn. Om du utelämnar sökvägen är standardinställningen den aktuella platsen.

Som standard returnerar Invoke-RestMethod resultatet till pipelinen.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-PassThru

Den här parametern är endast giltig när parametern OutFile också används i kommandot . Avsikten är att få resultatet skrivet till en fil och till pipelinen.

Anmärkning

När du använder parametern PassThru skrivs utdata till pipelinen men filen är tom. Mer information finns i PowerShell-ärende #15409.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:No output
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Proxy

Använder en proxyserver för begäran i stället för att ansluta direkt till Internetresursen. Ange URI för en nätverksproxyserver.

Parameteregenskaper

Typ:Uri
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-ProxyCredential

Anger ett användarkonto som har behörighet att använda proxyservern som anges av parametern Proxy. Standardvärdet är den aktuella användaren.

Ange ett användarnamn, till exempel "User01" eller "Domain01\User01", eller ange ett PSCredential- objekt, till exempel ett som genereras av Get-Credential cmdlet.

Den här parametern är endast giltig när parametern Proxy också används i kommandot . Du kan inte använda parametrarna ProxyCredential och ProxyUseDefaultCredentials i samma kommando.

Parameteregenskaper

Typ:PSCredential
Standardvärde:Current user
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-ProxyUseDefaultCredentials

Använder autentiseringsuppgifterna för den aktuella användaren för att komma åt proxyservern som anges av parametern Proxy.

Den här parametern är endast giltig när parametern Proxy också används i kommandot . Du kan inte använda parametrarna ProxyCredential och ProxyUseDefaultCredentials i samma kommando.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-SessionVariable

Skapar en variabel som innehåller webbbegärandesessionen. Ange ett variabelnamn utan symbolen dollartecken ($).

När du anger en sessionsvariabel skapar Invoke-RestMethod ett sessionsobjekt för webbbegäran och tilldelar det till en variabel med det angivna namnet i PowerShell-sessionen. Du kan använda variabeln i sessionen så snart kommandot har slutförts.

Till skillnad från en fjärrsession är webbbegärandesessionen inte en beständig anslutning. Det är ett objekt som innehåller information om anslutningen och begäran, inklusive cookies, autentiseringsuppgifter, maximalt omdirigeringsvärde och användaragentsträngen. Du kan använda den för att dela tillstånd och data mellan webbbegäranden.

Om du vill använda webbbegärandesessionen i efterföljande webbbegäranden anger du sessionsvariabeln i värdet för parametern WebSession. PowerShell använder data i sessionsobjektet för webbbegäran när den nya anslutningen upprättas. Om du vill åsidosätta ett värde i webbbegäranssessionen använder du en cmdlet-parameter, till exempel UserAgent eller Credential. Parametervärden har företräde framför värden i webbbegärandesessionen.

Du kan inte använda parametrarna SessionVariable och WebSession i samma kommando.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False
Alias:SV

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-TimeoutSec

Anger hur länge begäran kan vänta innan tidsgränsen uppnås. Ange ett värde i sekunder. Standardvärdet 0 anger en tidsgräns på obestämd tid.

En DNS-fråga (Domain Name System) kan ta upp till 15 sekunder att returnera eller överskrida tidsgränsen. Om din begäran innehåller ett värdnamn som kräver lösning och du anger TimeoutSec till ett värde som är större än noll, men mindre än 15 sekunder, kan det ta 15 sekunder eller mer innan en WebException utlöses och din begäran överskrider tidsgränsen.

Parameteregenskaper

Typ:Int32
Standardvärde:0
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-TransferEncoding

Anger ett värde för http-svarshuvudet för överföringskodning. De godtagbara värdena för den här parametern är:

  • Chunked
  • Compress
  • Deflate
  • GZip
  • Identity

Parameteregenskaper

Typ:String
Standardvärde:None
Godkända värden:chunked, compress, deflate, gzip, identity
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-Uri

Anger URI (Uniform Resource Identifier) för den Internetresurs som webbbegäran skickas till. Den här parametern stöder HTTP-, HTTPS-, FTP- och FILE-värden.

Den här parametern krävs. Parameternamnet (Uri) är valfritt.

Parameteregenskaper

Typ:Uri
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:0
Obligatorisk:True
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-UseBasicParsing

Anger att cmdleten använder grundläggande parsning. Cmdleten returnerar den råa HTML-koden i ett String-objekt.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-UseDefaultCredentials

Använder den aktuella användarens autentiseringsuppgifter för att skicka webbbegäran.

Parameteregenskaper

Typ:SwitchParameter
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-UserAgent

Anger en användaragentsträng för webbbegäran.

Standardanvändaragenten liknar Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 med små variationer för varje operativsystem och plattform.

Om du vill testa en webbplats med standardanvändaragentsträngen som används av de flesta webbläsare använder du egenskaperna för klassen PSUserAgent, till exempel Chrome, Firefox, InternetExplorer, Opera och Safari.

Parameteregenskaper

Typ:String
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

-WebSession

Anger en webbförfrågningssession. Ange variabelnamnet, inklusive dollartecknet ($).

Om du vill åsidosätta ett värde i webbbegäranssessionen använder du en cmdlet-parameter, till exempel UserAgent eller Credential. Parametervärden har företräde framför värden i webbbegärandesessionen.

Till skillnad från en fjärrsession är webbbegärandesessionen inte en beständig anslutning. Det är ett objekt som innehåller information om anslutningen och begäran, inklusive cookies, autentiseringsuppgifter, maximalt omdirigeringsvärde och användaragentsträngen. Du kan använda den för att dela tillstånd och data mellan webbbegäranden.

Om du vill skapa en webbförfrågningssession anger du ett variabelnamn, utan dollartecken, i värdet för parametern SessionVariable för ett Invoke-RestMethod kommando. Invoke-RestMethod skapar sessionen och sparar den i variabeln. I efterföljande kommandon använder du variabeln som värdet för parametern WebSession.

Du kan inte använda parametrarna SessionVariable och WebSession i samma kommando.

Parameteregenskaper

Typ:WebRequestSession
Standardvärde:None
Stöder jokertecken:False
DontShow:False

Parameteruppsättningar

(All)
Position:Named
Obligatorisk:False
Värde från pipeline:False
Värde från pipeline efter egenskapsnamn:False
Värde från återstående argument:False

CommonParameters

Den här cmdleten stöder vanliga parametrar: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction och -WarningVariable. Mer information finns i about_CommonParameters.

Indata

Object

Du kan skicka brödtexten för en webbbegäran till den här cmdleten.

Utdata

Int64

När begäran returnerar ett heltal returnerar den här cmdleten det heltalet.

String

När begäran returnerar en sträng, returnerar denna cmdlet strängen.

XmlDocument

När begäran returnerar giltig XML returnerar den här cmdleten den som en XmlDocument-.

PSObject

När begäran returnerar JSON-strängar returnerar den här cmdleten en PSObject- som representerar data.

Kommentarer

Windows PowerShell innehåller följande alias för Invoke-RestMethod:

  • irm

När REST-slutpunkten returnerar flera objekt tas objekten emot som en matris. Om du skickar utdata från Invoke-RestMethod till ett annat kommando skickas det som ett enda [Object[]] objekt. Innehållet i matrisen räknas inte upp för nästa kommando på pipelinen.