Invoke-RestMethod

Verzendt een HTTP- of HTTPS-aanvraag naar een RESTful-webservice.

Syntax

Invoke-RestMethod
      [-Method <WebRequestMethod>]
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      [-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>
      [-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>
      [-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>
      [-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>]

Description

De Invoke-RestMethod cmdlet verzendt HTTP- en HTTPS-aanvragen naar REST-webservices (Representational State Transfer) die uitgebreide gestructureerde gegevens retourneren.

PowerShell formatteert het antwoord op basis van het gegevenstype. Voor een RSS- of ATOM-feed retourneert PowerShell de XML-knooppunten Item of Entry. Voor JavaScript Object Notation (JSON) of XML converteert PowerShell de inhoud naar [PSCustomObject] objecten of deserialisaties.

Notitie

Wanneer het REST-eindpunt meerdere objecten retourneert, worden de objecten ontvangen als een matrix. Als u de uitvoer naar Invoke-RestMethod een andere opdracht doorgeeft, wordt deze verzonden als één [Object[]] object. De inhoud van die matrix wordt niet geïnventariseerd voor de volgende opdracht in de pijplijn.

Deze cmdlet wordt geïntroduceerd in Windows PowerShell 3.0.

Vanaf PowerShell 7.0 ondersteunt proxyconfiguratie die Invoke-RestMethod is gedefinieerd door omgevingsvariabelen. Zie de sectie Notities van dit artikel.

Voorbeelden

Voorbeeld 1: De PowerShell RSS-feed ophalen

In dit voorbeeld wordt de Invoke-RestMethod cmdlet gebruikt om informatie op te halen uit de RSS-feed van de PowerShell-blog. De opdracht gebruikt de Format-Table cmdlet om de waarden van de eigenschappen Title en pubDate van elke blog in een tabel weer te geven.

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

Voorbeeld 2: Een POST-aanvraag uitvoeren

In dit voorbeeld voert Invoke-RestMethod een gebruiker een POST-aanvraag uit op een intranetwebsite in de organisatie van de gebruiker.

$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

De referenties worden gevraagd en vervolgens opgeslagen in $Cred en de URL die toegang krijgt, wordt gedefinieerd in $Url.

De $Body variabele beschrijft de zoekcriteria, geeft CSV op als de uitvoermodus en geeft een periode op voor geretourneerde gegevens die twee dagen geleden beginnen en één dag geleden eindigt. De hoofdtekstvariabele geeft waarden op voor parameters die van toepassing zijn op de specifieke REST API waarmee Invoke-RestMethod wordt gecommuniceerd.

De Invoke-RestMethod opdracht wordt uitgevoerd met alle variabelen die aanwezig zijn en geeft een pad en bestandsnaam op voor het resulterende CSV-uitvoerbestand.

Voorbeeld 3: Relationele koppelingen volgen

Sommige REST API's ondersteunen paginering via relationele koppelingen per RFC5988. In plaats van de header te parseren om de URL voor de volgende pagina op te halen, kunt u de cmdlet dit laten doen. In dit voorbeeld worden de eerste twee pagina's met problemen uit de GitHub-opslagplaats van PowerShell geretourneerd.

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

Voorbeeld 4: Vereenvoudigde verzending van meerdere onderdelen/formuliergegevens

Voor sommige API's moeten multipart/form-data inzendingen worden verzonden om bestanden en gemengde inhoud te uploaden. In dit voorbeeld ziet u hoe u het profiel van een gebruiker bijwerkt.

$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

Voor het profielformulier zijn de volgende velden vereist: , , email, en birthdayhobbies. avatarlastNamefirstName De API verwacht dat een afbeelding voor de afbeelding van het gebruikersprofiel wordt opgegeven in het avatar veld. De API accepteert ook meerdere hobbies vermeldingen die in hetzelfde formulier moeten worden ingediend.

Bij het maken van de $Form HashTable worden de sleutelnamen gebruikt als formulierveldnamen. Standaard worden de waarden van de HashTable geconverteerd naar tekenreeksen. Als er een System.IO.FileInfo waarde aanwezig is, wordt de bestandsinhoud verzonden. Als een verzameling zoals matrices of lijsten aanwezig is, wordt het formulierveld meerdere keren verzonden.

Met behulp van Get-Item de avatar sleutel wordt het FileInfo object ingesteld als de waarde. Het resultaat is dat de afbeeldingsgegevens voor jdoe.png worden verzonden.

Door een lijst op te geven aan de hobbies sleutel, wordt het hobbies veld eenmaal voor elk lijstitem weergegeven in de inzendingen.

Voorbeeld 5: Meerdere headers doorgeven

API's vereisen vaak doorgegeven headers voor verificatie of validatie. In dit voorbeeld ziet u hoe u meerdere headers van een hash-table naar een REST API doorgeeft.

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

Voorbeeld 6: Geretourneerde items opsommen in de pijplijn

GitHub retourneert meerdere objecten een matrix. Als u de uitvoer doorgeeft aan een andere opdracht, wordt deze verzonden als één [Object[]]object.

Als u de objecten in de pijplijn wilt inventariseren, sluist u de resultaten door naar Write-Output of verpakt u de cmdlet tussen haakjes. In het volgende voorbeeld wordt het aantal objecten geteld dat door GitHub wordt geretourneerd. Vervolgens wordt het aantal objecten geteld dat is geïnventariseerd aan de pijplijn.

$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

Voorbeeld 7: Headervalidatie overslaan

De cmdlet valideert standaard Invoke-RestMethod de waarden van bekende headers met een standaardwaarde-indeling. In het volgende voorbeeld ziet u hoe deze validatie een fout kan veroorzaken en hoe u de parameter SkipHeaderValidation kunt gebruiken om te voorkomen dat waarden worden gevalideerd voor eindpunten die ongeldig opgemaakte waarden tolereren.

$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 is een service die informatie retourneert over webaanvragen en antwoorden voor probleemoplossing. De $Uri variabele wordt toegewezen aan het /headers eindpunt van de service, waarmee de headers van een aanvraag als de inhoud in het antwoord worden geretourneerd.

De If-Match aanvraagheader is gedefinieerd in RFC-7232 sectie 3.1 en vereist dat de waarde voor die header wordt gedefinieerd met omringende aanhalingstekens. Aan de $InvalidHeaders variabele wordt een hash-tabel toegewezen waarvan de waarde If-Match ongeldig is omdat deze is gedefinieerd als 12345 in plaats van "12345".

Aanroepen Invoke-RestMethod met de ongeldige headers retourneert een foutrapportage dat de opgemaakte waarde ongeldig is. De aanvraag wordt niet naar het eindpunt verzonden.

Als u aanroept Invoke-RestMethod met de parameter SkipHeaderValidation , wordt de validatiefout genegeerd en wordt de aanvraag naar het eindpunt verzonden. Omdat het eindpunt niet-compatibele headerwaarden tolereert, retourneert de cmdlet het antwoordobject zonder fouten.

Parameters

-AllowUnencryptedAuthentication

Hiermee kunt u referenties en geheimen verzenden via niet-versleutelde verbindingen. Het opgeven van referenties of een verificatieoptie met een URI die niet begint https:// , resulteert standaard in een fout en de aanvraag wordt afgebroken om onbedoelde communicatie van geheimen in tekst zonder opmaak via niet-versleutelde verbindingen te voorkomen. Als u dit gedrag op eigen risico wilt overschrijven, geeft u de parameter AllowUnencryptedAuthentication op.

Waarschuwing

Het gebruik van deze parameter is niet veilig en wordt niet aanbevolen. Het is alleen beschikbaar voor compatibiliteit met verouderde systemen die geen versleutelde verbindingen kunnen bieden. Gebruik op eigen risico.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Hiermee geeft u het expliciete verificatietype op dat moet worden gebruikt voor de aanvraag. De standaardwaarde is None. De verificatieparameter kan niet worden gebruikt met de parameter UseDefaultCredentials .

Beschikbare verificatieopties:

  • None: Dit is de standaardoptie wanneer verificatie niet wordt opgegeven. Er wordt geen expliciete verificatie gebruikt.
  • Basic: Vereist referentie. De referenties worden gebruikt voor het verzenden van een RFC 7617 Basic Authentication-header Authorization: Basic in de indeling van base64(user:password).
  • Bearer: Vereist de tokenparameter . Verzendt een RFC 6750-header Authorization: Bearer met het opgegeven token.
  • OAuth: Vereist de tokenparameter . Verzendt een RFC 6750-header Authorization: Bearer met het opgegeven token.

Als u verificatie opgeeft, worden eventuele Authorization headers die worden geleverd aan headers of opgenomen in WebSession, overschreven.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:WebAuthenticationType
Accepted values:None, Basic, Bearer, OAuth
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Body

Hiermee geeft u de hoofdtekst van de aanvraag. De hoofdtekst is de inhoud van de aanvraag die de headers volgt. U kunt ook een lichaamswaarde doorsluisen naar Invoke-RestMethod.

De parameter Hoofdtekst kan worden gebruikt om een lijst met queryparameters op te geven of de inhoud van het antwoord op te geven.

Wanneer de invoer een POST-aanvraag is en de hoofdtekst een tekenreeks is, wordt de waarde links van het eerste gelijkteken (=) ingesteld als een sleutel in de formuliergegevens en wordt de resterende tekst ingesteld als de waarde. Als u meerdere sleutels wilt opgeven, gebruikt u een IDictionary-object , zoals een hash-tabel, voor de hoofdtekst.

Wanneer de invoer een GET-aanvraag is en de hoofdtekst een IDictionary is (meestal een hash-tabel), wordt de hoofdtekst als queryparameters aan de URI toegevoegd. Voor andere aanvraagtypen (zoals PATCH) wordt de hoofdtekst ingesteld als de waarde van de aanvraagbody in de standaardindeling name=value met de waarden die door de URL zijn gecodeerd.

Wanneer de invoer een System.Xml.XmlNode-object is en de XML-declaratie een codering opgeeft, wordt die codering gebruikt voor de gegevens in de aanvraag, tenzij deze worden overschreven door de parameter ContentType .

Wanneer de hoofdtekst een formulier is of als uitvoer van een andere Invoke-WebRequest aanroep, stelt PowerShell de aanvraaginhoud in op de formuliervelden.

De parameter Body kan ook een System.Net.Http.MultipartFormDataContent-object accepteren. Dit vereenvoudigt multipart/form-data aanvragen. Wanneer een MultipartFormDataContent-object wordt geleverd voor hoofdtekst, worden alle inhoudsgerelateerde headers die worden geleverd aan de parameters ContentType, Headers of WebSession overschreven door de inhoudskoppen van het MultipartFormDataContent object. Deze functie is toegevoegd in PowerShell 6.0.0.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Certificate

Hiermee geeft u het clientcertificaat op dat wordt gebruikt voor een beveiligde webaanvraag. Voer een variabele in die een certificaat of een opdracht of expressie bevat die het certificaat ophaalt.

Als u een certificaat wilt zoeken, gebruikt Get-PfxCertificate of gebruikt u de Get-ChildItem cmdlet in het certificaatstation (Cert:). Als het certificaat niet geldig is of niet over voldoende autoriteit beschikt, mislukt de opdracht.

Type:X509Certificate
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Hiermee geeft u het certificaat voor de digitale openbare sleutel (X509) van een gebruikersaccount op dat gemachtigd is om de aanvraag te verzenden. Voer de vingerafdruk van het certificaat in.

Certificaten worden gebruikt in verificatie op basis van clientcertificaten. Certificaten kunnen alleen worden toegewezen aan lokale gebruikersaccounts, niet aan domeinaccounts.

Als u de vingerafdruk van het certificaat wilt zien, gebruikt u de Get-Item of Get-ChildItem opdracht om het certificaat in Cert:\CurrentUser\Myte zoeken.

Notitie

Deze functie wordt momenteel alleen ondersteund op Windows-besturingssysteemplatforms.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContentType

Hiermee geeft u het inhoudstype van de webaanvraag op.

Als de waarde voor ContentType de coderingsindeling (als charset) bevat, gebruikt de cmdlet die indeling om de hoofdtekst van de webaanvraag te coderen. Als het ContentType geen coderingsindeling opgeeft, wordt in plaats daarvan de standaardcoderingsindeling gebruikt. Een voorbeeld van een ContentType met een coderingsindeling is text/plain; charset=iso-8859-5, waarmee het Latijnse/Cyrillische alfabet wordt opgegeven.

Als deze parameter wordt weggelaten en de aanvraagmethode POST is, Invoke-RestMethod stelt u het inhoudstype in op application/x-www-form-urlencoded. Anders wordt het inhoudstype niet opgegeven in de aanroep.

ContentType wordt overschreven wanneer een MultipartFormDataContent object wordt opgegeven voor hoofdtekst.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Hiermee geeft u een gebruikersaccount op dat gemachtigd is om de aanvraag te verzenden. Standaard is dit de huidige gebruiker.

Typ een gebruikersnaam, zoals User01 of Domain01\User01, of voer een PSCredential-object in dat is gegenereerd door de Get-Credential cmdlet.

Referenties kunnen alleen worden gebruikt of in combinatie met bepaalde opties voor verificatieparameters . Wanneer deze alleen wordt gebruikt, worden alleen referenties aan de externe server verstrekt als de externe server een aanvraag voor verificatievraag verzendt. Wanneer deze worden gebruikt met verificatieopties , worden de referenties expliciet verzonden.

Referenties worden opgeslagen in een PSCredential-object en het wachtwoord wordt opgeslagen als SecureString.

Notitie

Zie Hoe veilig is SecureString SecureString?voor meer informatie over SecureString-gegevensbeveiliging.

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CustomMethod

Hiermee geeft u de aangepaste methode op die wordt gebruikt voor de webaanvraag. Dit kan worden gebruikt met de aanvraagmethode die door het eindpunt is vereist, is geen beschikbare optie voor de methode. Methode en CustomMethod kunnen niet samen worden gebruikt.

Voorbeeld:

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

Hiermee wordt een TEST HTTP-aanvraag naar de API verzonden.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:String
Aliases:CM
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DisableKeepAlive

Geeft aan dat de cmdlet de KeepAlive-waarde in de HTTP-header instelt op False. KeepAlive is standaard Waar. KeepAlive brengt een permanente verbinding tot stand met de server om volgende aanvragen te vergemakkelijken.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Geeft aan dat de cmdlet relationele koppelingen moet volgen.

Sommige REST API's ondersteunen paginering via relationele koppelingen per RFC5988. In plaats van de header te parseren om de URL voor de volgende pagina op te halen, kunt u de cmdlet dit laten doen. Als u wilt instellen hoe vaak relationele koppelingen moeten worden gevolgd, gebruikt u de parameter MaximumFollowRelLink .

Wanneer u deze schakeloptie gebruikt, retourneert de cmdlet een verzameling pagina's met resultaten. Elke pagina met resultaten kan meerdere resultaatitems bevatten.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:SwitchParameter
Aliases:FL
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Form

Converteert een woordenlijst naar een multipart/form-data inzending. Het formulier kan niet worden gebruikt met hoofdtekst. Als ContentType wordt genegeerd.

De sleutels van de woordenlijst worden gebruikt als de veldnamen van het formulier. Standaard worden formulierwaarden geconverteerd naar tekenreekswaarden.

Als de waarde een System.IO.FileInfo-object is, wordt de inhoud van het binaire bestand verzonden. De naam van het bestand wordt verzonden als de filename. De MIME wordt ingesteld als application/octet-stream. Get-Item kan worden gebruikt om het leveren van het object System.IO.FileInfo te vereenvoudigen.

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

Als de waarde een verzamelingstype is, zoals een matrix of lijst, wordt het voorveld meerdere keren verzonden. De waarden van de lijst worden standaard behandeld als tekenreeksen. Als de waarde een System.IO.FileInfo-object is, wordt de inhoud van het binaire bestand verzonden. Geneste verzamelingen worden niet ondersteund.

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

In het bovenstaande voorbeeld wordt het tags veld drie keer in de vorm opgegeven, eenmaal voor elk van Vacation, Italyen 2017. Het pictures veld wordt ook eenmaal verzonden voor elk bestand in de 2017-Italy map. De binaire inhoud van de bestanden in die map wordt verzonden als de waarden.

Deze functie is toegevoegd in PowerShell 6.1.0.

Type:IDictionary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Headers

Hiermee geeft u de headers van de webaanvraag. Voer een hash-tabel of -woordenlijst in.

Inhoudsgerelateerde headers, zoals Content-Type worden overschreven wanneer een MultipartFormDataContent object wordt opgegeven voor hoofdtekst.

Type:IDictionary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InFile

Hiermee haalt u de inhoud van de webaanvraag op uit een bestand.

Voer een pad en bestandsnaam in. Als u het pad weglaat, is de standaardlocatie de huidige locatie.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Hiermee geeft u op hoe vaak relationele koppelingen moeten worden gevolgd als FollowRelLink wordt gebruikt. Er kan een kleinere waarde nodig zijn als de REST API wordt beperkt vanwege te veel aanvragen. De standaardwaarde is [Int32]::MaxValue. Een waarde van 0 (nul) voorkomt het volgen van relatiekoppelingen.

Type:Int32
Aliases:ML
Position:Named
Default value:Int32.MaxValue
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumRedirection

Hiermee geeft u op hoe vaak PowerShell een verbinding omleidt naar een alternatieve URI (Uniform Resource Identifier) voordat de verbinding mislukt. De standaardwaarde is 5. Een waarde van 0 (nul) voorkomt dat alle omleidingen worden omgeleid.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumRetryCount

Hiermee geeft u op hoe vaak PowerShell een verbinding opnieuw probeert uit te proberen wanneer een foutcode tussen 400 en 599, inclusief of 304 wordt ontvangen. Zie ook de parameter RetryIntervalSec voor het opgeven van het aantal seconden tussen nieuwe pogingen.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Method

Hiermee geeft u de methode op die wordt gebruikt voor de webaanvraag. De aanvaardbare waarden voor deze parameter zijn:

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

De parameter CustomMethod kan worden gebruikt voor aanvraagmethoden die hierboven niet worden vermeld.

Type:WebRequestMethod
Accepted values:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoProxy

Geeft aan dat de cmdlet geen proxy gebruikt om de bestemming te bereiken.

Gebruik deze schakeloptie wanneer u de proxy die is geconfigureerd in Internet Explorer of een proxy die is opgegeven in de omgeving, moet overslaan.

Deze parameter is geïntroduceerd in PowerShell 6.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutFile

Slaat de hoofdtekst van het antwoord op in het opgegeven uitvoerbestand. Voer een pad en bestandsnaam in. Als u het pad weglaat, is de standaardlocatie de huidige locatie. De naam wordt behandeld als een letterlijk pad. Namen die haakjes ([]) bevatten, moeten tussen enkele aanhalingstekens (') worden geplaatst.

Invoke-RestMethod Retourneert standaard de resultaten naar de pijplijn.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Deze parameter is alleen geldig wanneer de outfile-parameter ook wordt gebruikt in de opdracht. De bedoeling is dat de resultaten naar het bestand en naar de pijplijn worden geschreven.

Notitie

Wanneer u de PassThru-parameter gebruikt, wordt de uitvoer naar de pijplijn geschreven, maar wordt het bestand niet gemaakt. Zie PowerShell-probleem 15409 voor meer informatie.

Type:SwitchParameter
Position:Named
Default value:No output
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PreserveAuthorizationOnRedirect

Geeft aan dat de cmdlet de Authorization header moet behouden, indien aanwezig, tussen omleidingen.

Standaard wordt de header door de Authorization cmdlet verwijderd voordat deze wordt omgeleid. Als u deze parameter opgeeft, wordt deze logica uitgeschakeld voor gevallen waarin de header naar de omleidingslocatie moet worden verzonden.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Proxy

Maakt gebruik van een proxyserver voor de aanvraag, in plaats van rechtstreeks verbinding te maken met de internetresource. Voer de URI (Uniform Resource Identifier) van een netwerkproxyserver in.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ProxyCredential

Hiermee geeft u een gebruikersaccount op dat gemachtigd is voor het gebruik van de proxyserver die is opgegeven door de proxyparameter . Standaard is dit de huidige gebruiker.

Typ een gebruikersnaam, zoals User01 of Domain01\User01, User@Domain.Comof voer een PSCredential object in, zoals een object dat is gegenereerd door de Get-Credential cmdlet.

Deze parameter is alleen geldig wanneer de proxyparameter ook wordt gebruikt in de opdracht. U kunt de parameters ProxyCredential en ProxyUseDefaultCredentials niet gebruiken in dezelfde opdracht.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ProxyUseDefaultCredentials

Geeft aan dat de cmdlet de referenties van de huidige gebruiker gebruikt voor toegang tot de proxyserver die is opgegeven door de proxyparameter .

Deze parameter is alleen geldig wanneer de proxyparameter ook wordt gebruikt in de opdracht. U kunt de parameters ProxyCredential en ProxyUseDefaultCredentials niet gebruiken in dezelfde opdracht.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ResponseHeadersVariable

Hiermee maakt u een variabele die een antwoordheaderwoordenlijst bevat. Voer een variabelenaam in zonder het dollarteken ($) symbool. De sleutels van de woordenlijst bevatten de veldnamen en waarden van de antwoordheader die door de webserver worden geretourneerd.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:String
Aliases:RHV
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Resume

Voert een beste poging uit om het downloaden van een gedeeltelijk bestand te hervatten. Voor de parameter Hervatten is de outfile-parameter vereist.

Cv werkt alleen op de grootte van het lokale bestand en extern bestand en voert geen andere validatie uit dat het lokale bestand en het externe bestand hetzelfde zijn.

Als de lokale bestandsgrootte kleiner is dan de externe bestandsgrootte, probeert de cmdlet het downloaden van het bestand te hervatten en de resterende bytes toe te voegen aan het einde van het bestand.

Als de lokale bestandsgrootte hetzelfde is als de externe bestandsgrootte, wordt er geen actie ondernomen en wordt ervan uitgegaan dat de download al is voltooid door de cmdlet.

Als de grootte van het lokale bestand groter is dan de externe bestandsgrootte, wordt het lokale bestand overschreven en wordt het hele externe bestand volledig opnieuw gedownload. Dit gedrag is hetzelfde als het gebruik van OutFile zonder Cv.

Als de externe server geen ondersteuning biedt voor downloaden, wordt het lokale bestand overschreven en wordt het hele externe bestand volledig opnieuw gedownload. Dit gedrag is hetzelfde als het gebruik van OutFile zonder Cv.

Als het lokale bestand niet bestaat, wordt het lokale bestand gemaakt en wordt het hele externe bestand volledig gedownload. Dit gedrag is hetzelfde als het gebruik van OutFile zonder Cv.

Deze functie is toegevoegd in PowerShell 6.1.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RetryIntervalSec

Hiermee geeft u het interval op tussen nieuwe pogingen voor de verbinding wanneer een foutcode tussen 400 en 599, inclusief of 304 wordt ontvangen. De waarde moet tussen 1 en [int]::MaxValue.

Zie ook de parameter MaximumRetryCount voor het opgeven van het aantal nieuwe pogingen.

Type:Int32
Position:Named
Default value:5
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionVariable

Hiermee maakt u een variabele die de webaanvraagsessie bevat. Voer een variabelenaam in zonder het dollarteken ($) symbool.

Wanneer u een sessievariabele opgeeft, Invoke-RestMethod maakt u een sessieobject voor webaanvragen en wijst u deze toe aan een variabele met de opgegeven naam in uw PowerShell-sessie. U kunt de variabele in uw sessie gebruiken zodra de opdracht is voltooid.

Vóór PowerShell 7.4 is de sessie met webaanvragen geen permanente verbinding. Het is een object dat informatie bevat over de verbinding en de aanvraag, waaronder cookies, referenties, de maximale omleidingswaarde en de tekenreeks van de gebruikersagent. U kunt deze gebruiken om status en gegevens te delen tussen webaanvragen.

Vanaf PowerShell 7.4 blijft de webaanvraagsessie persistent zolang de eigenschappen van de sessie niet worden overschreven in een volgende aanvraag. Wanneer dat het is, maakt de cmdlet de sessie opnieuw met de nieuwe waarden. De permanente sessies verminderen de overhead voor herhaalde aanvragen, waardoor ze veel sneller worden.

Als u de webaanvraagsessie in volgende webaanvragen wilt gebruiken, geeft u de sessievariabele op in de waarde van de parameter WebSession . PowerShell gebruikt de gegevens in het sessieobject voor webaanvragen bij het tot stand brengen van de nieuwe verbinding. Als u een waarde in de webaanvraagsessie wilt overschrijven, gebruikt u een cmdlet-parameter, zoals UserAgent of Credential. Parameterwaarden hebben voorrang op waarden in de webaanvraagsessie.

U kunt de parameters SessionVariable en WebSession niet gebruiken in dezelfde opdracht.

Type:String
Aliases:SV
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipCertificateCheck

Slaat certificaatvalidatiecontroles over die alle validaties bevatten, zoals vervaldatum, intrekking, vertrouwde basisinstantie, enzovoort.

Waarschuwing

Het gebruik van deze parameter is niet veilig en wordt niet aanbevolen. Deze switch is alleen bedoeld om te worden gebruikt voor bekende hosts met behulp van een zelfondertekend certificaat voor testdoeleinden. Gebruik op eigen risico.

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipHeaderValidation

Geeft aan dat de cmdlet zonder validatie headers aan de aanvraag moet toevoegen.

Deze schakeloptie moet worden gebruikt voor sites waarvoor headerwaarden zijn vereist die niet voldoen aan standaarden. Als u deze schakeloptie opgeeft, wordt validatie uitgeschakeld zodat de waarde niet kan worden doorgegeven. Wanneer dit is opgegeven, worden alle headers zonder validatie toegevoegd.

Hiermee wordt validatie uitgeschakeld voor waarden die zijn doorgegeven aan de parameters ContentType, Headers en UserAgent .

Deze functie is toegevoegd in PowerShell 6.0.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipHttpErrorCheck

Deze parameter zorgt ervoor dat de cmdlet http-foutstatussen negeert en reacties blijft verwerken. De foutreacties worden naar de pijplijn geschreven alsof ze zijn geslaagd.

Deze parameter is geïntroduceerd in PowerShell 7.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SslProtocol

Hiermee stelt u de SSL/TLS-protocollen in die zijn toegestaan voor de webaanvraag. Standaard zijn alle SSL/TLS-protocollen die door het systeem worden ondersteund, toegestaan. SslProtocol maakt het mogelijk om te beperken tot specifieke protocollen voor nalevingsdoeleinden.

Deze waarden worden gedefinieerd als een opsomming op basis van vlaggen. U kunt meerdere waarden combineren om meerdere vlaggen in te stellen met behulp van deze parameter. De waarden kunnen worden doorgegeven aan de parameter SslProtocol als een matrix met waarden of als een door komma's gescheiden tekenreeks van deze waarden. De cmdlet combineert de waarden met behulp van een binaire OF-bewerking. Het doorgeven van waarden als een matrix is de eenvoudigste optie en u kunt ook tabvoltooiing gebruiken voor de waarden. U kunt mogelijk niet meerdere waarden opgeven op alle platforms.

Notitie

Op niet-Windows-platforms is het mogelijk niet mogelijk om te leveren Tls of Tls12 als optie. Ondersteuning voor Tls13 is niet beschikbaar op alle besturingssystemen en moet per besturingssysteem worden geverifieerd.

Deze functie is toegevoegd in PowerShell 6.0.0 en ondersteuning voor Tls13 deze functie is toegevoegd in PowerShell 7.1.

Type:WebSslProtocol
Accepted values:Default, Tls, Tls11, Tls12, Tls13
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StatusCodeVariable

Hiermee maakt u een variabele met een HTTP-statuscoderesultaat van de aanvraag. Voer een variabelenaam in zonder het dollarteken ($) symbool.

De parameter kan geslaagde berichten of foutberichten identificeren wanneer deze worden gebruikt met de parameter SkipHttpErrorCheck .

Voer de naam van de variabele van de parameter in als een tekenreeks, zoals -StatusCodeVariable "scv".

Deze parameter is geïntroduceerd in PowerShell 7.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TimeoutSec

Hiermee geeft u op hoe lang de aanvraag in behandeling kan zijn voordat er een time-out optreedt. Voer een waarde in seconden in. De standaardwaarde, 0, geeft een onbepaalde time-out op.

Het kan tot 15 seconden duren voordat een DNS-query (Domain Name System) retourneert of een time-out optreedt. Als uw aanvraag een hostnaam bevat waarvoor een oplossing is vereist en u TimeoutSec instelt op een waarde die groter is dan nul, maar minder dan 15 seconden, kan het 15 seconden of langer duren voordat een WebException wordt gegenereerd en er een time-out optreedt voor uw aanvraag.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Token

Het OAuth- of Bearer-token dat in de aanvraag moet worden opgenomen. Token is vereist voor bepaalde verificatieopties . Het kan niet onafhankelijk worden gebruikt.

Token gebruikt een SecureString token dat het token bevat. Als u het token wilt opgeven, gebruikt u handmatig het volgende:

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

Deze parameter is geïntroduceerd in PowerShell 6.0.

Type:SecureString
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TransferEncoding

Hiermee geeft u een waarde op voor de http-antwoordheader voor overdrachtscodering. De aanvaardbare waarden voor deze parameter zijn:

  • Gesegmenteerd
  • Comprimeren
  • Deflate
  • Gzip
  • Identiteit
Type:String
Accepted values:chunked, compress, deflate, gzip, identity
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Uri

Hiermee geeft u de URI (Uniform Resource Identifier) van de internetresource waarnaar de webaanvraag wordt verzonden. Deze parameter ondersteunt HTTP-, HTTPS-, FTP- en FILE-waarden.

Deze parameter is vereist. De parameternaam (URI) is optioneel.

Type:Uri
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-UseBasicParsing

Deze parameter is afgeschaft. Vanaf PowerShell 6.0.0.0 gebruiken alle webaanvragen alleen basisparsering. Deze parameter is alleen opgenomen voor compatibiliteit met eerdere versies en elk gebruik ervan heeft geen invloed op de werking van de cmdlet.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseDefaultCredentials

Geeft aan dat de cmdlet de referenties van de huidige gebruiker gebruikt om de webaanvraag te verzenden. Dit kan niet worden gebruikt met verificatie of referenties en wordt mogelijk niet ondersteund op alle platforms.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserAgent

Hiermee geeft u een tekenreeks voor de gebruikersagent voor de webaanvraag op.

De standaardgebruikersagent is vergelijkbaar Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 met kleine variaties voor elk besturingssysteem en platform.

Als u een website wilt testen met de standaardtekenreeks voor gebruikersagenten die door de meeste internetbrowsers wordt gebruikt, gebruikt u de eigenschappen van de klasse PSUserAgent , zoals Chrome, FireFox, InternetExplorer, Opera en Safari.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WebSession

Hiermee geeft u een webaanvraagsessie. Voer de naam van de variabele in, inclusief het dollarteken ($).

Als u een waarde in de webaanvraagsessie wilt overschrijven, gebruikt u een cmdlet-parameter, zoals UserAgent of Credential. Parameterwaarden hebben voorrang op waarden in de webaanvraagsessie. Inhoudsgerelateerde headers, zoals Content-Type, worden ook overschreven wanneer een MultipartFormDataContent-object wordt opgegeven voor body.

In tegenstelling tot een externe sessie is de webaanvraagsessie geen permanente verbinding. Het is een object dat informatie bevat over de verbinding en de aanvraag, waaronder cookies, referenties, de maximale omleidingswaarde en de tekenreeks van de gebruikersagent. U kunt deze gebruiken om status en gegevens te delen tussen webaanvragen.

Als u een webaanvraagsessie wilt maken, voert u een variabelenaam in, zonder dollarteken, in de waarde van de parameter SessionVariable van een Invoke-RestMethod opdracht. Invoke-RestMethod maakt de sessie en slaat deze op in de variabele. In volgende opdrachten gebruikt u de variabele als de waarde van de parameter WebSession .

U kunt de parameters SessionVariable en WebSession niet gebruiken in dezelfde opdracht.

Type:WebRequestSession
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Invoerwaarden

Object

U kunt de hoofdtekst van een webaanvraag doorsluisen naar deze cmdlet.

Uitvoerwaarden

Int64

Wanneer de aanvraag een geheel getal retourneert, retourneert deze cmdlet dat gehele getal.

String

Wanneer de aanvraag een tekenreeks retourneert, retourneert deze cmdlet die tekenreeks.

XmlDocument

Wanneer de aanvraag geldige XML retourneert, retourneert deze cmdlet deze als xmldocument.

PSObject

Wanneer de aanvraag JSON-tekenreeksen retourneert, retourneert deze cmdlet een PSObject dat de gegevens vertegenwoordigt.

Notities

PowerShell bevat de volgende aliassen voor Invoke-RestMethod:

  • Alle platforms:
    • irm

Sommige functies zijn mogelijk niet beschikbaar op alle platforms.

Vanwege wijzigingen in .NET Core 3.1 gebruikt PowerShell 7.0 en hoger de eigenschap HttpClient.DefaultProxy om de proxyconfiguratie te bepalen.

De waarde van deze eigenschap is afhankelijk van uw platform verschillende regels:

  • Voor Windows: leest de proxyconfiguratie van omgevingsvariabelen of, als deze niet zijn gedefinieerd, uit de proxy-instellingen van de gebruiker.
  • Voor macOS: leest proxyconfiguratie van omgevingsvariabelen of, als deze niet zijn gedefinieerd, uit de proxy-instellingen van het systeem.
  • Voor Linux: leest de proxyconfiguratie van omgevingsvariabelen of, in het geval dat deze niet zijn gedefinieerd, initialiseert deze eigenschap een niet-geconfigureerd exemplaar dat alle adressen omzeilt.

De omgevingsvariabelen die worden gebruikt voor DefaultProxy initialisatie op Windows- en Unix-platforms zijn:

  • HTTP_PROXY: de hostnaam of het IP-adres van de proxyserver die wordt gebruikt voor HTTP-aanvragen.
  • HTTPS_PROXY: de hostnaam of het IP-adres van de proxyserver die wordt gebruikt voor HTTPS-aanvragen.
  • ALL_PROXY: de hostnaam of het IP-adres van de proxyserver die wordt gebruikt in HTTP- en HTTPS-aanvragen in het geval HTTP_PROXY dat deze HTTPS_PROXY niet zijn gedefinieerd.
  • NO_PROXY: een door komma's gescheiden lijst met hostnamen die moeten worden uitgesloten van proxying.