Invoke-WebRequest
Hämtar innehåll från en webbsida på Internet.
Syntax
Invoke-WebRequest
[-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>]
[-Method <WebRequestMethod>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
[-Method <WebRequestMethod>]
-NoProxy
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
-CustomMethod <String>
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Invoke-WebRequest
[-UseBasicParsing]
[-Uri] <Uri>
[-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>]
-CustomMethod <String>
-NoProxy
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[-PreserveAuthorizationOnRedirect]
[-SkipHeaderValidation]
[<CommonParameters>]
Description
Cmdleten Invoke-WebRequest
skickar HTTP- och HTTPS-begäranden till en webbsida eller webbtjänst. Den parsar svaret och returnerar samlingar med länkar, bilder och andra viktiga HTML-element.
Denna cmdlet introducerades i PowerShell 3.0.
Från och med PowerShell 7.0 stöder Invoke-WebRequest
proxykonfiguration som definieras av miljövariabler. Se avsnittet Anteckningar i den här artikeln.
Viktigt
Exemplen i den här artikeln refererar till värdar i domänen contoso.com
. Det här är en fiktiv domän som används av Microsoft till exempel. Exemplen är utformade för att visa hur du använder cmdletarna.
Men eftersom webbplatserna contoso.com
inte finns fungerar inte exemplen. Anpassa exemplen till värdar i din miljö.
Exempel
Exempel 1: Skicka en webbbegäran
I det här exemplet används cmdleten Invoke-WebRequest
för att skicka en webbbegäran till Bing.com webbplats.
$Response = Invoke-WebRequest -URI https://www.bing.com/search?q=how+many+feet+in+a+mile
$Response.InputFields | Where-Object {
$_.name -like "* Value*"
} | Select-Object Name, Value
name value
---- -----
From Value 1
To Value 5280
Det första kommandot utfärdar begäran och sparar svaret i variabeln $Response
.
Det andra kommandot hämtar alla InputField där egenskapen Name är som "* Value"
. De filtrerade resultaten skickas till Select-Object
för att välja egenskaperna Namn och Värde .
Exempel 2: Använd en tillståndskänslig webbtjänst
Det här exemplet visar hur du använder cmdleten Invoke-WebRequest
med en tillståndskänslig webbtjänst.
$LoginParameters = @{
Uri = 'https://www.contoso.com/login/'
SessionVariable = 'Session'
Method = 'POST'
Body = @{
User = 'jdoe'
Password = 'P@S$w0rd!'
}
}
$LoginResponse = Invoke-WebRequest @LoginParameters
$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session
Det första anropet till Invoke-WebRequest
skickar en inloggningsbegäran. Kommandot anger värdet Session
för för parametern SessionVariable . När kommandot har slutförts innehåller variabeln $LoginResponse
en BasicHtmlWebResponseObject och variabeln $Session
innehåller ett WebRequestSession
-objekt. Detta loggar in användaren på webbplatsen.
Det andra anropet för att Invoke-WebRequest
hämta användarens profil, vilket kräver att användaren är inloggad på webbplatsen. Sessionsdata som lagras i variabeln $Session
tillhandahåller sessionscookies till den webbplats som skapades under inloggningen.
Exempel 3: Hämta länkar från en webbsida
Det här exemplet hämtar länkarna på en webbsida. Den använder cmdleten Invoke-WebRequest
för att hämta webbplatsens innehåll. Sedan används egenskapen Länkar för den BasicHtmlWebResponseObject som Invoke-WebRequest
returneras och Href-egenskapen för varje länk.
(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href
Exempel 4: Skriva svarsinnehåll till en fil med hjälp av kodningen som definierats på den begärda sidan
I det här exemplet används cmdleten Invoke-WebRequest
för att hämta webbsidans innehåll på en PowerShell-dokumentationssida.
$Response = Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs"
$Stream = [System.IO.StreamWriter]::new('.\docspage.html', $false, $Response.Encoding)
try {
$Stream.Write($Response.Content)
} finally {
$Stream.Dispose()
}
Det första kommandot hämtar sidan och sparar svarsobjektet i variabeln $Response
.
Det andra kommandot skapar en StreamWriter som ska användas för att skriva svarsinnehållet till en fil. Egenskapen Encoding för svarsobjektet används för att ange kodningen för filen.
De sista kommandona skriver egenskapen Content till filen och tar sedan bort StreamWriter.
Observera att kodningsegenskapen är null om webbbegäran inte returnerar textinnehåll.
Exempel 5: Skicka en fil med flera delar/formulärdata
I det här exemplet används cmdleten Invoke-WebRequest
för att ladda upp en fil som en multipart/form-data
överföring. Filen c:\document.txt
skickas som formulärfält document
med Content-Type
i text/plain
.
$FilePath = 'c:\document.txt'
$FieldName = 'document'
$ContentType = 'text/plain'
$FileStream = [System.IO.FileStream]::new($filePath, [System.IO.FileMode]::Open)
$FileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new('form-data')
$FileHeader.Name = $FieldName
$FileHeader.FileName = Split-Path -leaf $FilePath
$FileContent = [System.Net.Http.StreamContent]::new($FileStream)
$FileContent.Headers.ContentDisposition = $FileHeader
$FileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse($ContentType)
$MultipartContent = [System.Net.Http.MultipartFormDataContent]::new()
$MultipartContent.Add($FileContent)
$Response = Invoke-WebRequest -Body $MultipartContent -Method 'POST' -Uri 'https://api.contoso.com/upload'
Exempel 6: Förenklad överföring av flera delar/formulärdata
Vissa API:er kräver multipart/form-data
inskickade filer för att ladda upp filer och blandat innehåll. Det här exemplet visar hur du uppdaterar en användarprofil.
$Uri = 'https://api.contoso.com/v2/profile'
$Form = @{
firstName = 'John'
lastName = 'Doe'
email = 'john.doe@contoso.com'
avatar = Get-Item -Path 'c:\Pictures\jdoe.png'
birthday = '1980-10-15'
hobbies = 'Hiking','Fishing','Jogging'
}
$Result = Invoke-WebRequest -Uri $Uri -Method Post -Form $Form
Profilformuläret kräver följande fält: firstName
, lastName
, email
, avatar
, birthday
och hobbies
. API:et förväntar sig att en bild för användarprofilbilden ska anges i fältet avatar
. API:et accepterar också att flera hobbies
poster skickas i samma formulär.
När du skapar $Form
HashTable används nyckelnamnen som formulärfältnamn. Som standard konverteras värdena för HashTable till strängar. Om det finns ett System.IO.FileInfo-värde skickas filinnehållet. Om det finns en samling, till exempel matriser eller listor, skickas formulärfältet flera gånger.
Med hjälp av Get-Item
på avatar
nyckeln FileInfo
anges objektet som värde. Resultatet är att bilddata för jdoe.png
skickas.
Genom att ange en lista till hobbies
nyckeln finns fältet hobbies
i sändningarna en gång för varje listobjekt.
Exempel 7: Fånga meddelanden som inte lyckas från Invoke-WebRequest
När Invoke-WebRequest
påträffar ett HTTP-meddelande som inte lyckas (404, 500 osv.) returnerar det inga utdata och genererar ett avslutande fel. Om du vill fånga upp felet och visa StatusCode kan du omsluta körningen i ett try/catch
block.
try
{
$Response = Invoke-WebRequest -Uri "www.microsoft.com/unkownhost"
# This will only execute if the Invoke-WebRequest is successful.
$StatusCode = $Response.StatusCode
} catch {
$StatusCode = $_.Exception.Response.StatusCode.value__
}
$StatusCode
404
Det avslutande felet fångas av catch
blocket, som hämtar StatusCode från undantagsobjektet .
Exempel 8: Ladda ned flera filer samtidigt
Cmdleten Invoke-WebRequest
kan bara ladda ned en fil i taget. I följande exempel används Start-ThreadJob
för att skapa flera trådjobb för att ladda ned flera filer samtidigt.
$baseUri = 'https://github.com/PowerShell/PowerShell/releases/download'
$files = @(
@{
Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.msi"
OutFile = 'PowerShell-7.3.0-preview.5-win-x64.msi'
},
@{
Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.zip"
OutFile = 'PowerShell-7.3.0-preview.5-win-x64.zip'
},
@{
Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.msi"
OutFile = 'PowerShell-7.2.5-win-x64.msi'
},
@{
Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.zip"
OutFile = 'PowerShell-7.2.5-win-x64.zip'
}
)
$jobs = @()
foreach ($file in $files) {
$jobs += Start-ThreadJob -Name $file.OutFile -ScriptBlock {
$params = $using:file
Invoke-WebRequest @params
}
}
Write-Host "Downloads started..."
Wait-Job -Job $jobs
foreach ($job in $jobs) {
Receive-Job -Job $job
}
Exempel 9: Hoppa över sidhuvudvalidering
Som standard Invoke-WebRequest
validerar cmdleten värdena för välkända rubriker som har ett standarddefinierat värdeformat. I följande exempel visas hur den här verifieringen kan generera ett fel och hur du kan använda parametern SkipHeaderValidation för att undvika validering av värden för slutpunkter som tolererar ogiltigt formaterade värden.
$Uri = 'https://httpbin.org/headers'
$InvalidHeaders = @{
'If-Match' = '12345'
}
Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders
Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders -SkipHeaderValidation
Invoke-WebRequest: The format of value '12345' is invalid.
StatusCode : 200
StatusDescription : OK
Content : {
"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": �
RawContent : HTTP/1.1 200 OK
Date: Mon, 08 Aug 2022 16:24:24 GMT
Connection: keep-alive
Server: gunicorn/19.9.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Content-Type: application�
Headers : {[Date, System.String[]], [Connection, System.String[]], [Server, System.String[]], [Access-Control-Allow-Origin, System.String[]]�}
Images : {}
InputFields : {}
Links : {}
RawContentLength : 249
RelationLink : {}
httpbin.org är en tjänst som returnerar information om webbbegäranden och svar för felsökning. Variabeln $Uri
tilldelas till slutpunkten för /headers
tjänsten, som returnerar en begärans huvuden som innehåll i svaret.
Begärandehuvudet If-Match
definieras i RFC-7232 avsnitt 3.1 och kräver att värdet för rubriken definieras med omgivande citattecken. Variabeln $InvalidHeaders
tilldelas en hash-tabell där värdet If-Match
för är ogiltigt eftersom det definieras som 12345
i stället för "12345"
.
Om du anropar Invoke-WebRequest
med ogiltiga rubriker returneras ett fel som rapporterar att det formaterade värdet är ogiltigt. Begäran skickas inte till slutpunkten.
Om du anropar Invoke-WebRequest
med parametern SkipHeaderValidation ignoreras verifieringsfelet och begäran skickas till slutpunkten. Eftersom slutpunkten tolererar icke-kompatibla huvudvärden returnerar cmdleten svarsobjektet utan fel.
Exempel 10: Skicka en begäran med HTTP 2.0
Det här exemplet hämtar länkarna på en webbsida med hjälp av HTTP 2.0-protokollet. Den använder cmdleten Invoke-WebRequest
för att hämta webbplatsens innehåll. Sedan används egenskapen Länkar för den BasicHtmlWebResponseObject som Invoke-WebRequest
returneras och Href-egenskapen för varje länk.
(Invoke-WebRequest -Uri 'https://aka.ms/pscore6-docs' -HttpVersion 2.0).Links.Href
Parametrar
-AllowUnencryptedAuthentication
Tillåter att autentiseringsuppgifter och hemligheter skickas via okrypterade anslutningar. Som standard anger du alternativet Autentiseringsuppgift eller Autentisering med en URI som inte börjar med https://
resulterar i ett fel och begäran avbryts för att förhindra oavsiktlig kommunikation av hemligheter i okrypterad text över okrypterade anslutningar. Om du vill åsidosätta det här beteendet på egen risk anger du parametern AllowUnencryptedAuthentication .
Varning
Att använda den här parametern är inte säkert och rekommenderas inte. Den tillhandahålls endast för kompatibilitet med äldre system som inte kan tillhandahålla krypterade anslutningar. Använd på egen risk.
Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Anger den explicita autentiseringstyp som ska användas för begäran. Standardvärdet är Ingen. Autentiseringsparametern kan inte användas med parametern UseDefaultCredentials.
Tillgängliga autentiseringsalternativ:
None
: Det här är standardalternativet när autentisering inte anges. Ingen explicit autentisering används.Basic
: Kräver autentiseringsuppgifter. Autentiseringsuppgifterna skickas som en RFC 7617 Basic Authentication-rubrikAuthorization: Basic
i formatetbase64(user:password)
.Bearer
: Kräver parametern Token . Skickar en RFC 6750-rubrikAuthorization: Bearer
med den angivna token.OAuth
: Kräver parametern Token . Skickar en RFC 6750-rubrikAuthorization: Bearer
med den angivna token.
Om du anger autentisering åsidosätts alla Authorization
rubriker som anges i Rubriker eller som ingår i WebSession.
Den här funktionen har lagts till i 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
Anger brödtexten i begäran. Brödtexten är innehållet i begäran som följer rubrikerna.
Du kan också skicka ett brödtextvärde till Invoke-WebRequest
.
Body-parametern kan användas för att ange en lista med frågeparametrar eller ange innehållet i svaret.
När indata är en POST-begäran och brödtexten är en Sträng anges värdet till vänster om det första likhetstecknet (=
) som en nyckel i formulärdata och den återstående texten anges som värde. Om du vill ange flera nycklar använder du ett IDictionary-objekt , till exempel en hash-tabell, för brödtexten.
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 begärandetyper (till exempel PATCH) anges brödtexten som värdet för begärandetexten i standardformatet name=value
med värdena URL-kodade.
När indata är en System.Xml. XmlNode-objektet och XML-deklarationen anger en kodning. Kodningen används för data i begäran om den inte åsidosätts av parametern ContentType .
Parametern Body accepterar också ett System.Net.Http.MultipartFormDataContent
-objekt. Detta underlättar multipart/form-data
begäranden. När ett MultipartFormDataContent-objekt anges för Brödtext åsidosätts alla innehållsrelaterade rubriker som skickas till parametrarna ContentType, Headers eller WebSession av innehållshuvudena för Objektet MultipartFormDataContent . Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | Object |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Certificate
Anger klientcertifikatet 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 Get-PfxCertificate
eller använder du cmdleten Get-ChildItem
på certifikatenheten (Cert:
). Om certifikatet inte är giltigt eller inte har tillräcklig behörighet misslyckas kommandot.
Type: | X509Certificate |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CertificateThumbprint
Anger certifikatet för den digitala offentliga nyckeln (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 endast mappas till lokala användarkonton, inte domänkonton.
Om du vill se tumavtrycket för certifikatet Get-Item
använder du kommandot eller Get-ChildItem
för att hitta certifikatet i Cert:\CurrentUser\My
.
Anteckning
Den här funktionen stöds bara på Windows OS-plattformar.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContentType
Anger innehållstypen för webbbegäran.
Om värdet för ContentType innehåller kodningsformatet (som charset
) använder cmdleten det 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 det latinska/kyrilliska alfabetet.
Om den här parametern utelämnas och begärandemetoden är POST anger Invoke-WebRequest
du innehållstypen till application/x-www-form-urlencoded
. Annars anges inte innehållstypen i anropet.
ContentType åsidosätts när ett MultipartFormDataContent-objekt anges för Brödtext.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Credential
Anger ett användarkonto som har behörighet att skicka begäran. Standard ä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 kan användas ensam eller tillsammans med vissa alternativ för autentiseringsparametrar. När den används ensam tillhandahåller den bara autentiseringsuppgifter till fjärrservern om fjärrservern skickar en begäran om autentiseringsutmaning. När de används med autentiseringsalternativ skickas autentiseringsuppgifterna uttryckligen.
Autentiseringsuppgifter lagras i ett PSCredential-objekt och lösenordet lagras som en SecureString.
Anteckning
Mer information om SecureString-dataskydd finns i Hur säkert är SecureString?.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CustomMethod
Anger en anpassad metod som används för webbbegäran. Detta kan användas om den begärandemetod som krävs av slutpunkten inte är ett tillgängligt alternativ för metoden . Metoden och CustomMethod kan inte användas tillsammans.
I det här exemplet görs en TEST
HTTP-begäran till API:et:
Invoke-WebRequest -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'
Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | String |
Aliases: | CM |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DisableKeepAlive
Anger att cmdleten anger Värdet KeepAlive i HTTP-huvudet till Falskt. Som standard är KeepAliveSant. KeepAlive upprättar en beständig anslutning till servern för att underlätta efterföljande begäranden.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Form
Konverterar en ordlista till en multipart/form-data
överföring. Formuläret får inte användas med Brödtext.
Om ContentType används ignoreras det.
Nycklarna i ordlistan används som formulärfältnamn. Som standard konverteras formulärvärden till strängvärden.
Om värdet är ett System.IO.FileInfo-objekt skickas innehållet i den binära filen. Namnet på filen skickas som egenskapen filename . MIME-typen anges som application/octet-stream
. Get-Item
kan användas för att förenkla tillhandahållande av objektet System.IO.FileInfo .
$Form = @{ resume = Get-Item 'c:\Users\jdoe\Documents\John Doe.pdf' }
Om värdet är en samlingstyp, till exempel matriser eller Listor, skickas fältet för flera gånger. Värdena i listan behandlas som standard som strängar. Om värdet är ett System.IO.FileInfo-objekt skickas innehållet i den binära filen. Kapslade samlingar stöds inte.
$Form = @{ tags = 'Vacation', 'Italy', '2017' pictures = Get-ChildItem 'c:\Users\jdoe\Pictures\2017-Italy' }
I exemplet tags
ovan anges fältet tre gånger i formuläret, en gång för var och en av Vacation
, Italy
och 2017
. Fältet pictures
skickas också en gång för varje fil i 2017-Italy
mappen. Det binära innehållet i filerna i mappen skickas som värden.
Den här funktionen har lagts till i PowerShell 6.1.0.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Headers
Anger sidhuvudena för webbbegäran. Ange en hash-tabell eller ordlista.
Innehållsrelaterade rubriker, till exempel Content-Type
åsidosätts när ett MultipartFormDataContent-objekt anges för Brödtext.
Type: | IDictionary |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HttpVersion
Anger den HTTP-version som används för begäran. Standardvärdet är 1.1
.
Giltiga värden är:
- 1,0
- 1.1
- 2.0
- 3.0
Type: | Version |
Position: | Named |
Default value: | 1.1 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InFile
Hämtar innehållet i webbbegäran 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.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaximumRedirection
Anger hur många gånger 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.
Type: | Int32 |
Position: | Named |
Default value: | 5 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-MaximumRetryCount
Anger hur många gånger PowerShell försöker ansluta igen när en felkod mellan 400 och 599, inklusive eller 304 tas emot. Se även retryIntervalSec-parametern för att ange antalet återförsök.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Method
Anger den metod som används för webbbegäran. De acceptabla värdena för den här parametern är:
Default
Delete
Get
Head
Merge
Options
Patch
Post
Put
Trace
CustomMethod-parametern kan användas för begärandemetoder som inte anges ovan.
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
Anger att cmdleten inte ska använda en proxy för att nå målet. När du behöver kringgå proxyn som konfigurerats i miljön använder du den här växeln. Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutFile
Anger den utdatafil som den här cmdleten sparar svarstexten för. Ange en sökväg och ett filnamn.
Om du utelämnar sökvägen är standardinställningen den aktuella platsen. Namnet behandlas som en literal sökväg.
Namn som innehåller hakparenteser ([]
) måste omges av enkla citattecken ('
).
Som standard Invoke-WebRequest
returnerar resultatet till pipelinen. Om du vill skicka resultatet till en fil och till pipelinen använder du parametern Passthru .
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Anger att cmdleten returnerar resultatet, förutom att skriva dem till en fil. Den här parametern är endast giltig när parametern OutFile också används i kommandot .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PreserveAuthorizationOnRedirect
Anger att cmdleten ska bevara huvudet, när det Authorization
finns, över omdirigeringar.
Som standard tar cmdleten Authorization
bort huvudet innan du omdirigerar. Om du anger den här parametern inaktiveras den här logiken för fall där huvudet måste skickas till omdirigeringsplatsen.
Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Proxy
Anger en proxyserver för begäran i stället för att ansluta direkt till Internetresursen. Ange URI för en nätverksproxyserver.
Type: | Uri |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ProxyCredential
Anger ett användarkonto som har behörighet att använda proxyservern som anges av proxyparametern. Standard ä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 cmdleten Get-Credential
.
Den här parametern är endast giltig när proxyparametern också används i kommandot . Du kan inte använda parametrarna ProxyCredential och ProxyUseDefaultCredentials i samma kommando.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ProxyUseDefaultCredentials
Anger att cmdleten använder den aktuella användarens autentiseringsuppgifter för att komma åt proxyservern som anges av proxyparametern.
Den här parametern är endast giltig när proxyparametern också används i kommandot . Du kan inte använda parametrarna ProxyCredential och ProxyUseDefaultCredentials i samma kommando.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Resume
Utför ett bästa försök att återuppta nedladdningen av en partiell fil. Cv kräver OutFile.
Resume fungerar bara på storleken på den lokala filen och fjärrfilen och utför ingen annan verifiering av att den lokala filen och fjärrfilen är desamma.
Om den lokala filstorleken är mindre än fjärrfilens storlek försöker cmdleten att återuppta nedladdningen av filen och lägga till återstående byte i slutet av filen.
Om den lokala filstorleken är samma som fjärrfilens storlek vidtas ingen åtgärd och cmdleten förutsätter att nedladdningen redan är klar.
Om den lokala filstorleken är större än fjärrfilens storlek skrivs den lokala filen över och hela fjärrfilen laddas ned igen. Det här beteendet är detsamma som att använda OutFile utan Återuppta.
Om fjärrservern inte stöder återupptagning av nedladdning skrivs den lokala filen över och hela fjärrfilen laddas ned igen. Det här beteendet är detsamma som att använda OutFile utan Återuppta.
Om den lokala filen inte finns skapas den lokala filen och hela fjärrfilen laddas ned. Det här beteendet är detsamma som att använda OutFile utan Återuppta.
Den här funktionen har lagts till i PowerShell 6.1.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RetryIntervalSec
Anger intervallet mellan återförsök för anslutningen när en felkod mellan 400 och 599, inklusive eller 304 tas emot. Se även parametern MaximumRetryCount för att ange antalet återförsök. Värdet måste vara mellan 1
och [int]::MaxValue
.
Type: | Int32 |
Position: | Named |
Default value: | 5 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SessionVariable
Anger en variabel för vilken den här cmdleten skapar en webbbegärandesession och sparar den i värdet.
Ange ett variabelnamn utan dollartecknet ($
).
När du anger en sessionsvariabel Invoke-WebRequest
skapar du 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.
Före PowerShell 7.4 ä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.
Från och med PowerShell 7.4 är webbbegäranssessionen beständig så länge egenskaperna för sessionen inte åsidosättas i en efterföljande begäran. När de är det återskapar cmdleten sessionen med de nya värdena. De beständiga sessionerna minskar kostnaderna för upprepade begäranden, vilket gör dem mycket snabbare.
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 webbbegärandesessionsobjektet 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.
Type: | String |
Aliases: | SV |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipCertificateCheck
Hoppar över verifieringskontroller av certifikat. Detta omfattar alla valideringar, till exempel förfallodatum, återkallande, betrodd rotutfärdare osv.
Varning
Att använda den här parametern är inte säkert och rekommenderas inte. Den här växeln är endast avsedd att användas mot kända värdar med hjälp av ett självsignerat certifikat i testsyfte. Använd på egen risk.
Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipHeaderValidation
Anger att cmdleten ska lägga till rubriker i begäran utan validering.
Den här växeln ska användas för webbplatser som kräver rubrikvärden som inte överensstämmer med standarder. Om du anger den här växeln inaktiveras verifieringen så att värdet kan skickas avmarkerat. När detta anges läggs alla rubriker till utan validering.
Den här växeln inaktiverar validering av värden som skickas till parametrarna ContentType, Headers och UserAgent .
Den här funktionen har lagts till i PowerShell 6.0.0.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SkipHttpErrorCheck
Den här parametern gör att cmdleten ignorerar HTTP-felstatusar och fortsätter att bearbeta svar. Felsvaren skrivs till pipelinen precis som om de lyckades.
Den här parametern introducerades i PowerShell 7.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SslProtocol
Anger de SSL/TLS-protokoll som är tillåtna för webbbegäran. Som standard tillåts SSL/TLS-protokoll som stöds av systemet. SslProtocol gör det möjligt att begränsa till specifika protokoll i efterlevnadssyfte.
Dessa värden definieras som en flaggbaserad uppräkning. Du kan kombinera flera värden för att ange flera flaggor med den här parametern. Värdena kan skickas till parametern SslProtocol som en matris med värden eller som en kommaavgränsad sträng med dessa värden. Cmdleten kombinerar värdena med hjälp av en binär-OR-åtgärd. Att skicka värden som en matris är det enklaste alternativet och gör att du även kan använda tab-completion på värdena. Du kanske inte kan definiera flera alternativ på alla plattformar.
Anteckning
På icke-Windows-plattformar kanske det inte går att tillhandahålla Tls
eller Tls12
som ett alternativ. Stöd för Tls13
är inte tillgängligt på alla operativsystem och måste verifieras per operativsystem.
Den här funktionen lades till i PowerShell 6.0.0 och stöd för Tls13
lades till i PowerShell 7.1.
Type: | WebSslProtocol |
Accepted values: | Default, Tls, Tls11, Tls12 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TimeoutSec
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 genereras och tidsgränsen för din begäran uppnås.
Type: | Int32 |
Position: | Named |
Default value: | 0 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Token
OAuth- eller Ägartoken som ska inkluderas i begäran. Token krävs av vissa autentiseringsalternativ . Det kan inte användas oberoende av varandra.
Token tar en SecureString
som innehåller token. Om du vill ange token manuellt använder du följande:
Invoke-WebRequest -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)
Den här parametern introducerades i PowerShell 6.0.
Type: | SecureString |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TransferEncoding
Anger ett värde för HTTP-svarshuvudet för överföringskodning. De acceptabla värdena för den här parametern är:
Chunked
Compress
Deflate
GZip
Identity
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
Anger URI (Uniform Resource Identifier) för den Internetresurs som webbbegäran skickas till. Ange en URI. Den här parametern stöder endast HTTP eller HTTPS.
Den här parametern krävs. Parameternamnet Uri är valfritt.
Type: | Uri |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseBasicParsing
Den här parametern har blivit inaktuell. Från och med PowerShell 6.0.0 använder alla webbbegäranden endast grundläggande parsning. Den här parametern ingår endast för bakåtkompatibilitet och all användning av den påverkar inte cmdletens funktion.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseDefaultCredentials
Anger att cmdleten använder den aktuella användarens autentiseringsuppgifter för att skicka webbbegäran. Detta kan inte användas med autentisering eller autentiseringsuppgifter och stöds kanske inte på alla plattformar.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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.
Följande kommando använder till exempel användaragentsträngen för Internet Explorer: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WebSession
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. Innehållsrelaterade rubriker, till exempel Content-Type
, åsidosättas också när ett MultipartFormDataContent-objekt tillhandahålls för Brödtext.
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 webbbegärandesession anger du ett variabelnamn, utan ett dollartecken, i värdet för parametern SessionVariable för ett Invoke-WebRequest
kommando. Invoke-WebRequest
skapar sessionen och sparar den i variabeln. I efterföljande kommandon använder du variabeln som värde för parametern WebSession .
Du kan inte använda parametrarna SessionVariable och WebSession i samma kommando.
Type: | WebRequestSession |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka brödtexten i en webbbegäran till den här cmdleten.
Utdata
Den här cmdleten returnerar svarsobjektet som representerar resultatet av webbbegäran.
Kommentarer
PowerShell innehåller följande alias för Invoke-WebRequest
:
- Alla plattformar:
iwr
Från och med PowerShell 6.0.0 Invoke-WebRequest
stöds endast grundläggande parsning.
Mer information finns i BasicHtmlWebResponseObject.
På grund av ändringar i .NET Core 3.1 använder PowerShell 7.0 och senare egenskapen HttpClient.DefaultProxy för att fastställa proxykonfigurationen.
Värdet för den här egenskapen bestäms av din plattform:
- För Windows: Läser proxykonfiguration från miljövariabler. Om dessa variabler inte har definierats härleds egenskapen från användarens proxyinställningar.
- För macOS: Läser proxykonfiguration från miljövariabler. Om dessa variabler inte definieras härleds egenskapen från systemets proxyinställningar.
- För Linux: Läser proxykonfiguration från miljövariabler. Om dessa variabler inte har definierats initierar egenskapen en icke-konfigurerad instans som kringgår alla adresser.
Miljövariablerna som används för DefaultProxy
initiering på Windows- och Unix-baserade plattformar är:
HTTP_PROXY
: värdnamnet eller IP-adressen för proxyservern som används för HTTP-begäranden.HTTPS_PROXY
: värdnamnet eller IP-adressen för proxyservern som används för HTTPS-begäranden.ALL_PROXY
: värdnamnet eller IP-adressen för proxyservern som används för HTTP- och HTTPS-begäranden, om ellerHTTP_PROXY
HTTPS_PROXY
inte har definierats.NO_PROXY
: en kommaavgränsad lista över värdnamn som ska undantas från proxy.