Invoke-WebRequest
Ruft Inhalte von einer Webseite im Internet ab.
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]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
[-Method <WebRequestMethod>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
Invoke-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]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
[-Method <WebRequestMethod>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-NoProxy]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
Invoke-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]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
-CustomMethod <String>
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
Invoke-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]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
-CustomMethod <String>
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-NoProxy]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
Beschreibung
Das Invoke-WebRequest
Cmdlet sendet HTTP- und HTTPS-Anforderungen an eine Webseite oder einen Webdienst. Er analysiert die Antwort und gibt Auflistungen von Links, Bildern und anderen wichtigen HTML-Elementen zurück.
Dieses Cmdlet wurde in PowerShell 3.0 eingeführt.
Ab PowerShell 7.0 unterstützt die Proxykonfiguration, Invoke-WebRequest
die von Umgebungsvariablen definiert wird. Weitere Informationen finden Sie im Abschnitt "Hinweise " dieses Artikels.
Wichtig
Die Beispiele in diesem Artikel verweisen auf Hosts in der contoso.com
Domäne. Dies ist eine fiktive Domäne, die von Microsoft für Beispiele verwendet wird. Die Beispiele sollen zeigen, wie die Cmdlets verwendet werden.
Da die contoso.com
Websites jedoch nicht vorhanden sind, funktionieren die Beispiele nicht. Passen Sie die Beispiele an Hosts in Ihrer Umgebung an.
Ab PowerShell 7.4 ist die Zeichencodierung für Anforderungen standardmäßig auf UTF-8 anstelle von ASCII festgelegt. Wenn Sie eine andere Codierung benötigen, müssen Sie das charset
Attribut in der Content-Type
Kopfzeile festlegen.
Beispiele
Beispiel 1: Senden einer Webanforderung
In diesem Beispiel wird das Invoke-WebRequest
Cmdlet verwendet, um eine Webanforderung an die Bing.com Website zu senden.
$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
Der erste Befehl gibt die Anforderung aus und speichert die Antwort in der $Response
Variablen.
Der zweite Befehl ruft ein InputField ab, in dem die Name-Eigenschaft wie "* Value"
folgt ist. Die gefilterten Ergebnisse werden weitergeleitet, um Select-Object
die Eigenschaften "Name " und "Value " auszuwählen.
Beispiel 2: Verwenden eines zustandsbehafteten Webdiensts
In diesem Beispiel wird gezeigt, wie Sie das Invoke-WebRequest
Cmdlet mit einem zustandsbehafteten Webdienst verwenden.
$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
Der erste Aufruf zum Invoke-WebRequest
Senden einer Anmeldeanforderung. Der Befehl gibt einen Wert für Session
den Wert des SessionVariable-Parameters an. Nach Abschluss des Befehls enthält die $LoginResponse
Variable ein BasicHtmlWebResponseObject und die $Session
Variable ein WebRequestSession
Objekt. Dadurch wird der Benutzer bei der Website protokolliert.
Der zweite Aufruf zum Invoke-WebRequest
Abrufen des Benutzerprofils, bei dem der Benutzer bei der Website angemeldet sein muss. Die in der $Session
Variablen gespeicherten Sitzungsdaten stellen Sitzungscookies für die Website bereit, die während der Anmeldung erstellt wurde.
Beispiel 3: Abrufen von Links von einer Webseite
In diesem Beispiel werden die Links auf einer Webseite angezeigt. Es verwendet das Invoke-WebRequest
Cmdlet, um den Inhalt der Webseite abzurufen. Anschließend wird die Links-Eigenschaft des zurückgegebenen BasicHtmlWebResponseObject Invoke-WebRequest
und die Href-Eigenschaft der einzelnen Verknüpfungen verwendet.
(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href
Beispiel 4: Schreiben von Antwortinhalten in eine Datei mithilfe der auf der angeforderten Seite definierten Codierung
In diesem Beispiel wird das Invoke-WebRequest
Cmdlet verwendet, um den Webseiteninhalt einer PowerShell-Dokumentationsseite abzurufen.
$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()
}
Der erste Befehl ruft die Seite ab und speichert das Antwortobjekt in der $Response
Variablen.
Der zweite Befehl erstellt einen StreamWriter zum Schreiben des Antwortinhalts in eine Datei. Die Encoding-Eigenschaft des Antwortobjekts wird verwendet, um die Codierung für die Datei festzulegen.
Mit den letzten Befehlen wird die Content-Eigenschaft in die Datei geschrieben, und anschließend wird der StreamWriter gelöscht.
Beachten Sie, dass die Encoding-Eigenschaft null ist, wenn die Webanforderung keinen Textinhalt zurückgibt.
Beispiel 5: Senden einer mehrteiligen/Formulardatendatei
In diesem Beispiel wird das Invoke-WebRequest
Cmdlet verwendet, um eine Datei als multipart/form-data
Übermittlung hochzuladen. Die Datei c:\document.txt
wird als Formularfeld document
mit dem Content-Type
von text/plain
gesendet.
$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'
Beispiel 6: Vereinfachte mehrteilige/Formulardatenübermittlung
Einige APIs erfordern multipart/form-data
Übermittlungen zum Hochladen von Dateien und gemischten Inhalten. In diesem Beispiel wird das Aktualisieren eines Benutzerprofils veranschaulicht.
$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
Das Profilformular erfordert folgende Felder: firstName
, , lastName
, email
, avatar
, , birthday
und hobbies
. Die API erwartet, dass ein Bild für das Benutzerprofilbild im avatar
Feld bereitgestellt wird. Die API akzeptiert auch mehrere hobbies
Einträge, die in demselben Formular übermittelt werden sollen.
Beim Erstellen der $Form
HashTable werden die Schlüsselnamen als Formularfeldnamen verwendet. Standardmäßig werden die Werte der HashTable in Zeichenfolgen konvertiert. Wenn ein System.IO.FileInfo-Wert vorhanden ist, werden die Dateiinhalte übermittelt. Wenn eine Auflistung wie Arrays oder Listen vorhanden sind, wird das Formularfeld mehrmals übermittelt.
Bei Verwendung Get-Item
des avatar
Schlüssels wird das FileInfo
Objekt als Wert festgelegt. Das Ergebnis ist, dass die Bilddaten jdoe.png
übermittelt werden.
Durch Die Angabe einer Liste an den hobbies
Schlüssel ist das hobbies
Feld einmal in den Übermittlungen für jedes Listenelement vorhanden.
Beispiel 7: Erfassen von nicht erfolgreichen Nachrichten aus Invoke-WebRequest
Wenn Invoke-WebRequest
eine nicht erfolgreiche HTTP-Nachricht (404, 500 usw.) auftritt, gibt sie keine Ausgabe zurück und löst einen Beendigungsfehler aus. Um den Fehler zu erfassen und den StatusCode anzuzeigen, können Sie die Ausführung in einen try/catch
Block einschließen.
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
Der Beendigungsfehler wird vom catch
Block erfasst, der den StatusCode aus dem Exception-Objekt abruft.
Beispiel 8: Gleichzeitiges Herunterladen mehrerer Dateien
Das Invoke-WebRequest
Cmdlet kann jeweils nur eine Datei herunterladen. Im folgenden Beispiel werden Start-ThreadJob
mehrere Threadaufträge erstellt, um mehrere Dateien gleichzeitig herunterzuladen.
$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
}
Beispiel 9: Überspringen der Headerüberprüfung
Standardmäßig überprüft das Invoke-WebRequest
Cmdlet die Werte bekannter Header, die ein standardsdefiniertes Wertformat aufweisen. Das folgende Beispiel zeigt, wie diese Überprüfung einen Fehler auslösen kann und wie Sie den SkipHeaderValidation-Parameter verwenden können, um zu vermeiden, dass Werte für Endpunkte überprüft werden, die ungültig formatierte Werte tolerieren.
$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 ist ein Dienst, der Informationen zu Webanforderungen und Antworten zur Problembehandlung zurückgibt. Die $Uri
Variable wird dem /headers
Endpunkt des Diensts zugewiesen, der die Kopfzeilen einer Anforderung als Inhalt in der Antwort zurückgibt.
Der Anforderungsheader If-Match
wird in RFC-7232 Abschnitt 3.1 definiert und erfordert, dass der Wert für diesen Header mit umgebenden Anführungszeichen definiert wird. Der $InvalidHeaders
Variablen wird eine Hashtabelle zugewiesen, bei der der Wert If-Match
ungültig ist, da sie anstelle 12345
von "12345"
.
Das Aufrufen Invoke-WebRequest
mit den ungültigen Headern gibt eine Fehlerberichterstattung zurück, dass der formatierte Wert ungültig ist. Die Anforderung wird nicht an den Endpunkt gesendet.
Das Aufrufen Invoke-WebRequest
mit dem Parameter SkipHeaderValidation ignoriert den Überprüfungsfehler und sendet die Anforderung an den Endpunkt. Da der Endpunkt nicht kompatible Headerwerte toleriert, gibt das Cmdlet das Antwortobjekt ohne Fehler zurück.
Beispiel 10: Senden einer Anforderung mit HTTP 2.0
In diesem Beispiel werden die Links auf einer Webseite mithilfe des HTTP 2.0-Protokolls angezeigt. Es verwendet das Invoke-WebRequest
Cmdlet, um den Inhalt der Webseite abzurufen. Anschließend wird die Links-Eigenschaft des zurückgegebenen BasicHtmlWebResponseObject Invoke-WebRequest
und die Href-Eigenschaft der einzelnen Verknüpfungen verwendet.
(Invoke-WebRequest -Uri 'https://aka.ms/pscore6-docs' -HttpVersion 2.0).Links.Href
Beispiel 11: Senden einer Anforderung an eine Unix-Socketanwendung
Einige Anwendungen, z. B. Docker, machen einen Unix-Socket für die Kommunikation verfügbar. In diesem Beispiel wird eine Liste von Docker-Images mithilfe der Docker-API abfragen. Das Cmdlet stellt mithilfe des Unix-Sockets eine Verbindung mit dem Docker-Daemon bereit.
Invoke-WebRequest -Uri "http://localhost/v1.40/images/json/" -UnixSocket "/var/run/docker.sock"
Parameter
-AllowInsecureRedirect
Ermöglicht die Umleitung von HTTPS zu HTTP. Standardmäßig führt jede Anforderung, die von HTTPS zu HTTP umgeleitet wird, zu einem Fehler und die Anforderung wird abgebrochen, um unbeabsichtigte Kommunikation in Nur-Text über unverschlüsselte Verbindungen zu verhindern. Um dieses Verhalten auf eigenes Risiko außer Kraft zu setzen, verwenden Sie den Parameter AllowInsecureRedirect .
Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-AllowUnencryptedAuthentication
Ermöglicht das Senden von Anmeldeinformationen und geheimen Schlüsseln über unverschlüsselte Verbindungen. Standardmäßig wird das Bereitstellen von Anmeldeinformationen oder einer Authentifizierungsoption mit einem URI, der nicht mit https://
einem Fehler beginnt, bereitgestellt, und die Anforderung wird abgebrochen, um unbeabsichtigte Kommunikation geheimer Schlüssel im Nur-Text über unverschlüsselte Verbindungen zu verhindern. Um dieses Verhalten auf eigenes Risiko außer Kraft zu setzen, geben Sie den Parameter AllowUnencryptedAuthentication an.
Warnung
Die Verwendung dieses Parameters ist nicht sicher und wird nicht empfohlen. Es wird nur zur Kompatibilität mit älteren Systemen bereitgestellt, die keine verschlüsselten Verbindungen bereitstellen können. Verwenden Sie auf eigenes Risiko.
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Authentication
Gibt den expliziten Authentifizierungstyp an, der für die Anforderung verwendet werden soll. Der Standardwert ist None (Kein). Der Authentifizierungsparameter kann nicht mit dem Parameter UseDefaultCredentials verwendet werden.
Verfügbare Authentifizierungsoptionen:
None
: Dies ist die Standardoption, wenn die Authentifizierung nicht angegeben wird. Es wird keine explizite Authentifizierung verwendet.Basic
: Erfordert Anmeldeinformationen. Die Anmeldeinformationen werden als RFC 7617 Basic Authentication-HeaderAuthorization: Basic
im Format vonbase64(user:password)
.Bearer
: Erfordert den Token-Parameter . Sendet einen RFC 6750-HeaderAuthorization: Bearer
mit dem bereitgestellten Token.OAuth
: Erfordert den Token-Parameter . Sendet einen RFC 6750-HeaderAuthorization: Bearer
mit dem bereitgestellten Token.
Durch die Bereitstellung der Authentifizierung werden alle Authorization
Header außer Kraft gesetzt, die für Header bereitgestellt oder in WebSession enthalten sind.
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | WebAuthenticationType |
Zulässige Werte: | None, Basic, Bearer, OAuth |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Body
Gibt den Anforderungstext an. Der Text entspricht dem Inhalt der Anforderung, der auf die Header folgt.
Sie können auch einen Textkörperwert an Invoke-WebRequest
.
Der Parameter "Body" kann verwendet werden, um eine Liste von Abfrageparametern anzugeben oder den Inhalt der Antwort anzugeben. Für Abfrageparameter verwendet das Cmdlet die System.Net.WebUtility.UrlEncode-Methode , um die Schlüsselwertpaare zu codieren. Weitere Informationen zur Codierung von Zeichenfolgen für URLs finden Sie in der UrlEncode()-Methodenreferenz.
Wenn es sich bei der Eingabe um eine POST-Anforderung handelt und der Textkörper eine Zeichenfolge ist, wird der Wert links neben dem ersten Gleichheitszeichen (=
) als Schlüssel in den Formulardaten festgelegt, und der verbleibende Text wird als Wert festgelegt. Verwenden Sie zum Angeben mehrerer Schlüssel ein IDictionary-Objekt , z. B. eine Hashtabelle, für den Textkörper.
Wenn es sich bei der Eingabe um eine GET-Anforderung handelt und der Textkörper ein IDictionary (in der Regel eine Hashtabelle) ist, wird der Textkörper als Abfrageparameter dem URI hinzugefügt. Bei anderen Anforderungstypen (z. B. PATCH) wird der Textkörper als Wert des Anforderungstexts im Standardformat name=value
mit den Werten URL-codiert festgelegt.
Wenn es sich bei der Eingabe um ein System.Xml.XmlNode-Objekt handelt und die XML-Deklaration eine Codierung angibt, wird diese Codierung für die Daten in der Anforderung verwendet, es sei denn, dies wird vom ContentType-Parameter überschrieben.
Der Parameter "Body" akzeptiert auch ein System.Net.Http.MultipartFormDataContent
Objekt. Dies erleichtert multipart/form-data
Anforderungen. Wenn ein MultipartFormDataContent-Objekt für "Body" bereitgestellt wird, werden alle inhaltsbezogenen Header, die den Parametern ContentType, Headers oder WebSession bereitgestellt werden, von den Inhaltsheadern des MultipartFormDataContent-Objekts überschrieben. Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | Object |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Certificate
Gibt das Clientzertifikat an, das für eine sichere Webanforderung verwendet wird. Geben Sie eine Variable ein, die ein Zertifikat, einen Befehl oder einen Ausdruck enthält, durch die das Zertifikat abgerufen wird.
Um ein Zertifikat zu suchen, verwenden oder verwenden Sie Get-PfxCertificate
das Get-ChildItem
Cmdlet auf dem Zertifikatlaufwerk (Cert:
Zertifikat). Wenn das Zertifikat ungültig ist oder nicht über ausreichende Autorität verfügt, schlägt der Befehl fehl.
Typ: | X509Certificate |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-CertificateThumbprint
Gibt das digitale Zertifikat für öffentliche Schlüssel (X509) eines Benutzerkontos an, das über die Berechtigung zum Senden der Anforderung verfügt. Geben Sie den Zertifikatfingerabdruck des Zertifikats ein.
Zertifikate werden bei der clientzertifikatbasierten Authentifizierung verwendet. Zertifikate können nur lokalen Benutzerkonten zugeordnet werden, nicht Domänenkonten.
Um den Zertifikatfingerabdruck anzuzeigen, verwenden Sie den Befehl oder Get-ChildItem
den Get-Item
Befehl, um das Zertifikat in Cert:\CurrentUser\My
.
Hinweis
Dieses Feature wird nur auf Windows-Betriebssystemplattformen unterstützt.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ConnectionTimeoutSeconds
Gibt an, wie lange die Anforderung ausstehen kann, bevor ein Zeitüberschreitung erfolgt. Geben Sie einen Wert in Sekunden ein. Der Standardwert 0 (null) steht für einen unbegrenzten Zeitüberschreitungswert.
Eine DNS-Abfrage (Domain Name System) kann bis zu 15 Sekunden dauern, bis ein Timeout zurückgegeben oder beendet wird. Wenn Ihre Anforderung einen Hostnamen enthält, der eine Auflösung erfordert, und Sie "ConnectionTimeoutSeconds" auf einen Wert größer als 0 festlegen, aber weniger als 15 Sekunden, kann es 15 Sekunden oder mehr dauern, bis eine WebException ausgelöst wird, und die Zeitüberschreitung der Anforderung.
Dieser Parameter ersetzte den TimeoutSec-Parameter in PowerShell 7.4. Sie können TimeoutSec als Alias für ConnectionTimeoutSeconds verwenden.
Typ: | Int32 |
Aliase: | TimeoutSec |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ContentType
Gibt den Inhaltstyp der Webanforderung an.
Wenn der Wert für ContentType das Codierungsformat (as charset
) enthält, verwendet das Cmdlet dieses Format, um den Textkörper der Webanforderung zu codieren. Wenn der ContentType kein Codierungsformat angibt, wird stattdessen das Standardcodierungsformat verwendet. Ein Beispiel für einen ContentType mit einem Codierungsformat ist text/plain; charset=iso-8859-5
, das das lateinische/kyrillische Alphabet angibt.
Wenn dieser Parameter nicht angegeben wird und die Anforderungsmethode POST oder PUT ist, Invoke-WebRequest
legt den Inhaltstyp auf application/x-www-form-urlencoded
. Andernfalls wird der Inhaltstyp nicht im Aufruf angegeben.
ContentType wird überschrieben, wenn ein MultipartFormDataContent-Objekt für Body bereitgestellt wird.
Ab PowerShell 7.4 wird der im ContentType-Parameter angegebene Wert verwendet, wenn Sie diesen Parameter und den Headerparameter verwenden, um den Content-Type
Header zu definieren.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Credential
Gibt ein Benutzerkonto an, das über die Berechtigung zum Senden der Anforderung verfügt. Der Standardwert ist der aktuelle Benutzer.
Geben Sie einen Benutzernamen ein, z. B. "User01" oder "Domain01\User01", oder geben Sie ein vom Cmdlet generiertes Get-Credential
PSCredential-Objekt ein.
Anmeldeinformationen können allein oder in Verbindung mit bestimmten Authentifizierungsparameteroptionen verwendet werden. Wenn sie allein verwendet wird, stellt sie nur Anmeldeinformationen an den Remoteserver bereit, wenn der Remoteserver eine Anforderung für die Authentifizierungsabfrage sendet. Bei Verwendung mit Authentifizierungsoptionen werden die Anmeldeinformationen explizit gesendet.
Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString gespeichert.
Hinweis
Weitere Informationen zum Schutz von SecureString finden Sie unter "Wie sicher ist SecureString?".
Typ: | PSCredential |
Position: | Named |
Standardwert: | Current user |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-CustomMethod
Gibt eine benutzerdefinierte Methode an, die für die Webanforderung verwendet wird. Dies kann verwendet werden, wenn die vom Endpunkt erforderliche Anforderungsmethode keine verfügbare Option für die Methode ist. Methode und CustomMethod können nicht zusammen verwendet werden.
In diesem Beispiel wird eine TEST
HTTP-Anforderung an die API gestellt:
Invoke-WebRequest -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | String |
Aliase: | CM |
Position: | Named |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-DisableKeepAlive
Gibt an, dass das Cmdlet den KeepAlive-Wert im HTTP-Header auf False festlegt. "KeepAlive" ist standardmäßig "True". KeepAlive stellt eine dauerhafte Verbindung mit dem Server her, um nachfolgende Anforderungen zu erleichtern.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Form
Konvertiert ein Wörterbuch in eine multipart/form-data
Übermittlung. Das Formular kann nicht mit Textkörper verwendet werden.
Wenn ContentType verwendet wird, wird er ignoriert.
Die Schlüssel des Wörterbuchs werden als Formularfeldnamen verwendet. Standardmäßig werden Formularwerte in Zeichenfolgenwerte konvertiert.
Wenn es sich bei dem Wert um ein System.IO.FileInfo-Objekt handelt, werden die Binären Dateiinhalte übermittelt. Der Name der Datei wird als Dateinameneigenschaft übermittelt. Der MIME-Typ wird als application/octet-stream
. Get-Item
kann verwendet werden, um die Bereitstellung des System.IO.FileInfo-Objekts zu vereinfachen.
$Form = @{ resume = Get-Item 'c:\Users\jdoe\Documents\John Doe.pdf' }
Wenn es sich bei dem Wert um einen Sammlungstyp handelt, z. B. Arrays oder Listen, wird das Feld mehrmals übermittelt. Die Werte der Liste werden standardmäßig als Zeichenfolgen behandelt. Wenn es sich bei dem Wert um ein System.IO.FileInfo-Objekt handelt, werden die Binären Dateiinhalte übermittelt. Geschachtelte Sammlungen werden nicht unterstützt.
$Form = @{ tags = 'Urlaub', 'Italien', '2017' Bilder = Get-ChildItem 'c:\Users\jdoe\Pictures\2017-Italy' }
Im obigen Beispiel wird das tags
Feld dreimal im Formular angegeben, einmal für jedes von Vacation
, Italy
und 2017
. Das pictures
Feld wird auch einmal für jede Datei im 2017-Italy
Ordner übermittelt. Der binäre Inhalt der Dateien in diesem Ordner wird als Werte übermittelt.
Dieses Feature wurde in PowerShell 6.1.0 hinzugefügt.
Typ: | IDictionary |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Headers
Gibt die Header der Webanforderung an. Geben Sie eine Hashtabelle oder ein Wörterbuch ein.
Inhaltsbezogene Kopfzeilen, z Content-Type
. B. werden überschrieben, wenn ein MultipartFormDataContent-Objekt für Body bereitgestellt wird.
Ab PowerShell 7.4 wird der im ContentType-Parameter angegebene Wert verwendet, wenn Sie diesen Parameter verwenden, um den Content-Type
Header zu definieren und den ContentType-Parameter zu verwenden.
Typ: | IDictionary |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-HttpVersion
Gibt die HTTP-Version an, die für die Anforderung verwendet wird. Der Standardwert ist 1.1
.
Gültige Werte sind:
- 1.0
- 1.1
- 2.0
- 3.0
Typ: | Version |
Position: | Named |
Standardwert: | 1.1 |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-InFile
Ruft den Inhalt der Webanforderung aus einer Datei ab. Geben Sie einen Pfad und Dateinamen ein. Wenn Sie den Pfad weglassen, wird der aktuelle Speicherort als Standard verwendet.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MaximumRedirection
Gibt an, wie oft PowerShell eine Verbindung zu einem alternativen URI (Uniform Resource Identifier) umleitet, bevor die Verbindung fehlschlägt. Der Standardwert ist 5. Der Wert 0 (null) unterbindet sämtliche Umleitungen.
Typ: | Int32 |
Position: | Named |
Standardwert: | 5 |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-MaximumRetryCount
Gibt an, wie oft PowerShell eine Verbindung wiederholt, wenn ein Fehlercode zwischen 400 und 599 (einschließlich) oder 304 empfangen wird. Siehe auch den Parameter "RetryIntervalSec ", um die Anzahl der Wiederholungen anzugeben.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Method
Gibt die für die Webanforderung verwendete Methode an. Zulässige Werte für diesen Parameter:
Default
Delete
Get
Head
Merge
Options
Patch
Post
Put
Trace
Der Parameter CustomMethod kann für Anforderungsmethoden verwendet werden, die oben nicht aufgeführt sind.
Typ: | WebRequestMethod |
Zulässige Werte: | Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-NoProxy
Gibt an, dass das Cmdlet keinen Proxy verwenden sollte, um das Ziel zu erreichen. Wenn Sie den in der Umgebung konfigurierten Proxy umgehen müssen, verwenden Sie diesen Switch. Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OperationTimeoutSeconds
Dieses Timeout gilt für Datenlesevorgänge innerhalb eines Datenstroms, nicht für die gesamte Datenstromzeit. Der Standardwert 0 gibt ein unbestimmtes Timeout an.
Das Festlegen des Werts auf 30 Sekunden bedeutet, dass eine Verzögerung von mehr als 30 Sekunden zwischen Daten im Datenstrom die Anforderung beendet. Eine große Datei, die mehrere Minuten zum Herunterladen dauert, wird erst beendet, wenn der Datenstrom länger als 30 Sekunden dauert.
Typ: | Int32 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-OutFile
Gibt standardmäßig Invoke-WebRequest
die Ergebnisse an die Pipeline zurück. Wenn Sie den Parameter OutFile verwenden, werden die Ergebnisse in der angegebenen Datei gespeichert und nicht an die Pipeline zurückgegeben. Geben Sie einen Pfad und Dateinamen ein. Um die Ergebnisse an eine Datei und an die Pipeline zu senden, fügen Sie den Passthru-Parameter hinzu.
Wenn Sie den Pfad weglassen, wird der aktuelle Speicherort als Standard verwendet. Der Name wird als Literalpfad behandelt.
Namen, die eckige Klammern ([]
) enthalten, müssen in einfache Anführungszeichen ('
) eingeschlossen werden.
Ab PowerShell 7.4 können Sie einen Ordnerpfad ohne dateinamen angeben. Wenn Sie dies tun, verwendet der Befehl den Dateinamen aus dem letzten Segment des aufgelösten URI nach allen Umleitungen. Wenn Sie einen Ordnerpfad für OutFile angeben, können Sie den Parameter Resume nicht verwenden.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-PassThru
Gibt an, dass das Cmdlet die Ergebnisse zusätzlich zum Schreiben in eine Datei zurückgibt. Dieser Parameter ist nur gültig, wenn der OutFile-Parameter auch im Befehl verwendet wird.
Hinweis
Wenn Sie den PassThru-Parameter verwenden, wird die Ausgabe in die Pipeline geschrieben, die Datei wird jedoch nicht erstellt. Dies wurde in PowerShell 7.5-preview.4 behoben. Weitere Informationen finden Sie unter PowerShell-Problem Nr. 15409.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-PreserveAuthorizationOnRedirect
Gibt an, dass das Cmdlet den Authorization
Header beibehalten soll, wenn vorhanden, über Umleitungen hinweg.
Standardmäßig entfernt das Cmdlet die Authorization
Kopfzeile vor der Umleitung. Wenn Sie diesen Parameter angeben, wird diese Logik für Fälle deaktiviert, in denen der Header an den Umleitungsspeicherort gesendet werden muss.
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-PreserveHttpMethodOnRedirect
Gibt an, dass das Cmdlet die Methode der Anforderung über Umleitungen beibehalten soll.
Standardmäßig ändert das Cmdlet die Methode GET
, wenn sie umgeleitet wird. Wenn Sie diesen Parameter angeben, wird diese Logik deaktiviert, um sicherzustellen, dass die beabsichtigte Methode mit Umleitung verwendet werden kann.
Dieses Feature wurde in PowerShell 7.4 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Proxy
Gibt einen Proxyserver für die Anforderung an, anstatt eine direkte Verbindung mit der Internetressource herzustellen. Geben Sie den URI des Netzwerk-Proxyservers ein.
Typ: | Uri |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ProxyCredential
Gibt ein Benutzerkonto an, das über die Berechtigung zum Verwenden des durch den Proxyparameter angegebenen Proxyservers verfügt. Der Standardwert ist der aktuelle Benutzer.
Geben Sie einen Benutzernamen ein, zUser01
. B. oder Domain01\User01
geben Sie ein PSCredential-Objekt ein, z. B. einen vom Get-Credential
Cmdlet generierten.
Dieser Parameter ist nur gültig, wenn der Proxyparameter auch im Befehl verwendet wird. Sie können die Parameter ProxyCredential und ProxyUseDefaultCredentials nicht im selben Befehl verwenden.
Typ: | PSCredential |
Position: | Named |
Standardwert: | Current user |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-ProxyUseDefaultCredentials
Gibt an, dass das Cmdlet die Anmeldeinformationen des aktuellen Benutzers verwendet, um auf den Proxyserver zuzugreifen, der durch den Proxyparameter angegeben wird.
Dieser Parameter ist nur gültig, wenn der Proxyparameter auch im Befehl verwendet wird. Sie können die Parameter ProxyCredential und ProxyUseDefaultCredentials nicht im selben Befehl verwenden.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Resume
Führt einen best effort-Versuch aus, das Herunterladen einer Teildatei fortzusetzen. "Resume " erfordert "OutFile".
"Resume" funktioniert nur mit der Größe der lokalen Datei und der Remotedatei und führt keine andere Überprüfung durch, dass die lokale Datei und die Remotedatei identisch sind.
Wenn die lokale Dateigröße kleiner als die Remotedateigröße ist, versucht das Cmdlet, den Download der Datei fortzusetzen und die verbleibenden Bytes am Ende der Datei anzufügen.
Wenn die lokale Dateigröße mit der Größe der Remotedatei übereinstimmt, wird keine Aktion ausgeführt, und das Cmdlet geht davon aus, dass der Download bereits abgeschlossen ist.
Wenn die lokale Dateigröße größer als die Remotedatei ist, wird die lokale Datei überschrieben, und die gesamte Remotedatei wird erneut heruntergeladen. Dieses Verhalten entspricht der Verwendung von OutFile ohne Lebenslauf.
Wenn der Remoteserver das Fortsetzen des Downloads nicht unterstützt, wird die lokale Datei überschrieben, und die gesamte Remotedatei wird erneut heruntergeladen. Dieses Verhalten entspricht der Verwendung von OutFile ohne Lebenslauf.
Wenn die lokale Datei nicht vorhanden ist, wird die lokale Datei erstellt und die gesamte Remotedatei heruntergeladen. Dieses Verhalten entspricht der Verwendung von OutFile ohne Lebenslauf.
Dieses Feature wurde in PowerShell 6.1.0 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-RetryIntervalSec
Gibt das Intervall zwischen Wiederholungen für die Verbindung an, wenn ein Fehlercode zwischen 400 und 599 (einschließlich) oder 304 empfangen wird. Siehe auch den Parameter "MaximumRetryCount ", um die Anzahl der Wiederholungen anzugeben. Der Wert muss zwischen 1
und [int]::MaxValue
.
Wenn der Fehlercode 429 ist und die Antwort die Retry-After-Eigenschaft in den Headern enthält, verwendet das Cmdlet diesen Wert für das Wiederholungsintervall, auch wenn dieser Parameter angegeben ist.
Typ: | Int32 |
Position: | Named |
Standardwert: | 5 |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SessionVariable
Gibt eine Variable an, für die dieses Cmdlet eine Webanforderungssitzung erstellt und im Wert speichert.
Geben Sie einen Variablennamen ohne das Dollarzeichen ($
) ein.
Wenn Sie eine Sitzungsvariable angeben, Invoke-WebRequest
wird ein Webanforderungssitzungsobjekt erstellt und einer Variablen mit dem angegebenen Namen in Ihrer PowerShell-Sitzung zugewiesen. Sie können die Variable in der Sitzung verwenden, sobald der Befehl abgeschlossen wurde.
Vor PowerShell 7.4 ist die Webanforderungssitzung keine dauerhafte Verbindung. Es handelt sich um ein Objekt, das Informationen über die Verbindung und die Anforderung enthält, einschließlich Cookies, Anmeldeinformationen, maximaler Umleitungswert und der Benutzer-Agent-Zeichenfolge. Sie können das Objekt verwenden, um den Zustand und die Daten übergreifend für Webanforderungen zu nutzen.
Ab PowerShell 7.4 ist die Webanforderungssitzung dauerhaft, solange die Eigenschaften der Sitzung in einer nachfolgenden Anforderung nicht überschrieben werden. Wenn dies der Zeitpunkt ist, erstellt das Cmdlet die Sitzung mit den neuen Werten neu. Die persistenten Sitzungen reduzieren den Aufwand für wiederholte Anforderungen und machen sie viel schneller.
Um die Webanforderungssitzung in nachfolgenden Webanforderungen zu verwenden, geben Sie die Sitzungsvariable im Wert des WebSession-Parameters an. PowerShell verwendet die Daten im Webanforderungssitzungsobjekt beim Herstellen der neuen Verbindung. Um einen Wert in der Webanforderungssitzung außer Kraft zu setzen, verwenden Sie einen Cmdlet-Parameter, z . B. UserAgent oder Credential. Parameterwerte haben Vorrang vor Werten in der Webanforderungssitzung.
Sie können die Parameter "SessionVariable " und "WebSession " nicht im selben Befehl verwenden.
Typ: | String |
Aliase: | SV |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SkipCertificateCheck
Überspringt Zertifikatüberprüfungen. Dazu gehören alle Überprüfungen wie Ablauf, Sperrung, vertrauenswürdige Stammzertifizierungsstelle usw.
Warnung
Die Verwendung dieses Parameters ist nicht sicher und wird nicht empfohlen. Dieser Switch soll nur für bekannte Hosts mit einem selbstsignierten Zertifikat zu Testzwecken verwendet werden. Verwenden Sie auf eigenes Risiko.
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SkipHeaderValidation
Gibt an, dass das Cmdlet der Anforderung ohne Überprüfung Header hinzufügen soll.
Dieser Switch sollte für Websites verwendet werden, für die Headerwerte erforderlich sind, die nicht den Standards entsprechen. Wenn Sie diesen Schalter angeben, wird die Überprüfung deaktiviert, damit der Wert deaktiviert wird. Wenn angegeben, werden alle Header ohne Überprüfung hinzugefügt.
Mit diesem Switch wird die Überprüfung für Werte deaktiviert, die an die Parameter ContentType, Header und UserAgent übergeben werden.
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SkipHttpErrorCheck
Dieser Parameter bewirkt, dass das Cmdlet HTTP-Fehlerstatus ignoriert und weiterhin Antworten verarbeitet. Die Fehlerantworten werden genauso in die Pipeline geschrieben, als wären sie erfolgreich.
Dieser Parameter wurde in PowerShell 7 eingeführt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-SslProtocol
Legt die SSL/TLS-Protokolle fest, die für die Webanforderung zulässig sind. Standardmäßig sind ssl/TLS-Protokolle, die vom System unterstützt werden, zulässig. SslProtocol ermöglicht das Einschränken auf bestimmte Protokolle für Compliancezwecke.
Diese Werte werden als flagbasierte Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den SslProtocol-Parameter übergeben werden. Das Cmdlet kombiniert die Werte mit einem binär-OR-Vorgang. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht ihnen auch die Verwendung des Tabstopps für die Werte. Möglicherweise können Sie nicht mehrere Optionen auf allen Plattformen definieren.
Hinweis
Auf Nicht-Windows-Plattformen ist es möglicherweise nicht möglich, sie oder Tls12
als Option zu liefernTls
. Die Unterstützung ist Tls13
nicht auf allen Betriebssystemen verfügbar und muss pro Betriebssystem überprüft werden.
Dieses Feature wurde in PowerShell 6.0.0 hinzugefügt, und die Unterstützung für Tls13
dieses Feature wurde in PowerShell 7.1 hinzugefügt.
Typ: | WebSslProtocol |
Zulässige Werte: | Default, Tls, Tls11, Tls12 |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Token
Das OAuth- oder Bearer-Token, das in die Anforderung eingeschlossen werden soll. Token ist für bestimmte Authentifizierungsoptionen erforderlich. Sie kann nicht unabhängig verwendet werden.
Token akzeptiert ein SecureString
Token, das das Token enthält. Gehen Sie wie folgt vor, um das Token manuell zur Verfügung zu stellen:
Invoke-WebRequest -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)
Dieser Parameter wurde in PowerShell 6.0 eingeführt.
Typ: | SecureString |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-TransferEncoding
Gibt einen Wert für den HTTP-Antwortheader transfer-encoding an. Zulässige Werte für diesen Parameter:
Chunked
Compress
Deflate
GZip
Identity
Typ: | String |
Zulässige Werte: | chunked, compress, deflate, gzip, identity |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-UnixSocket
Gibt den Namen des Unix-Sockets an, mit dem eine Verbindung hergestellt werden soll. Dieser Parameter wird auf Unix-basierten Systemen und Windows Version 1803 und höher unterstützt. Weitere Informationen zur Windows-Unterstützung von Unix-Sockets finden Sie im Windows/WSL Interop mit AF_UNIX Blogbeitrag.
Dieser Parameter wurde in PowerShell 7.4 hinzugefügt.
Typ: | UnixDomainSocketEndPoint |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Uri
Gibt den URI (Uniform Resource Identifier) der Internetressource an, an die die Webanforderung gesendet wird. Geben Sie einen URI ein. Dieser Parameter unterstützt nur HTTP oder HTTPS.
Dieser Parameter ist erforderlich. Der Parametername URI ist optional.
Typ: | Uri |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-UseBasicParsing
Dieser Parameter ist veraltet. Ab PowerShell 6.0.0 verwenden alle Webanforderungen nur die grundlegende Analyse. Dieser Parameter ist nur aus Gründen der Abwärtskompatibilität enthalten, und jede Verwendung hat keine Auswirkungen auf den Vorgang des Cmdlets.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-UseDefaultCredentials
Gibt an, dass das Cmdlet die Anmeldeinformationen des aktuellen Benutzers verwendet, um die Webanforderung zu senden. Dies kann nicht mit Authentifizierung oder Anmeldeinformationen verwendet werden und wird möglicherweise nicht auf allen Plattformen unterstützt.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-UserAgent
Gibt eine Benutzer-Agent-Zeichenfolge für die Webanforderung an.
Der Standardbenutzer-Agent ähnelt Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0
geringfügigen Abweichungen für jedes Betriebssystem und jede Plattform.
Um eine Website mit der standardmäßigen Benutzer-Agent-Zeichenfolge zu testen, die von den meisten Internetbrowsern verwendet wird, verwenden Sie die Eigenschaften der PSUserAgent-Klasse , z. B. Chrome, FireFox, InternetExplorer, Opera und Safari.
Der folgende Befehl verwendet beispielsweise die Benutzer-Agent-Zeichenfolge für Internet Explorer: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WebSession
Gibt eine Webanforderungssitzung an. Geben Sie den Variablennamen ein, einschließlich des Dollarzeichens ($
).
Um einen Wert in der Webanforderungssitzung außer Kraft zu setzen, verwenden Sie einen Cmdlet-Parameter, z . B. UserAgent oder Credential. Parameterwerte haben Vorrang vor Werten in der Webanforderungssitzung. Inhaltsbezogene Kopfzeilen, z Content-Type
. B. , werden auch überschrieben, wenn ein MultipartFormDataContent-Objekt für Textkörper bereitgestellt wird.
Im Gegensatz zu einer Remotesitzung ist die Webanforderungssitzung keine dauerhafte Verbindung. Es handelt sich um ein Objekt, das Informationen über die Verbindung und die Anforderung enthält, einschließlich Cookies, Anmeldeinformationen, maximaler Umleitungswert und der Benutzer-Agent-Zeichenfolge. Sie können das Objekt verwenden, um den Zustand und die Daten übergreifend für Webanforderungen zu nutzen.
Um eine Webanforderungssitzung zu erstellen, geben Sie einen Variablennamen ohne Dollarzeichen in den Wert des SessionVariable-Parameters eines Invoke-WebRequest
Befehls ein. Invoke-WebRequest
erstellt die Sitzung und speichert sie in der Variablen. Verwenden Sie in nachfolgenden Befehlen die Variable als Wert des WebSession-Parameters .
Sie können die Parameter "SessionVariable " und "WebSession " nicht im selben Befehl verwenden.
Typ: | WebRequestSession |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können den Textkörper einer Webanforderung an dieses Cmdlet weiterleiten.
Ausgaben
Dieses Cmdlet gibt das Antwortobjekt zurück, das das Ergebnis der Webanforderung darstellt.
Hinweise
PowerShell enthält die folgenden Aliase für Invoke-WebRequest
:
- Alle Plattformen:
iwr
Ab PowerShell 6.0.0 Invoke-WebRequest
wird nur die grundlegende Analyse unterstützt.
Weitere Informationen finden Sie unter BasicHtmlWebResponseObject.
Aufgrund von Änderungen in .NET Core 3.1 verwenden PowerShell 7.0 und höher die HttpClient.DefaultProxy-Eigenschaft , um die Proxykonfiguration zu bestimmen.
Der Wert dieser Eigenschaft wird von Ihrer Plattform bestimmt:
- Für Windows: Liest die Proxykonfiguration aus Umgebungsvariablen. Wenn diese Variablen nicht definiert sind, wird die Eigenschaft von den Proxyeinstellungen des Benutzers abgeleitet.
- Für macOS: Liest die Proxykonfiguration aus Umgebungsvariablen. Wenn diese Variablen nicht definiert sind, wird die Eigenschaft von den Proxyeinstellungen des Systems abgeleitet.
- Für Linux: Liest die Proxykonfiguration aus Umgebungsvariablen. Wenn diese Variablen nicht definiert sind, initialisiert die Eigenschaft eine nicht konfigurierte Instanz, die alle Adressen umgeht.
Für die Initialisierung von DefaultProxy
auf Windows- und Unix-basierten Plattformen werden folgende Umgebungsvariablen verwendet:
HTTP_PROXY
: der Hostname oder die IP-Adresse des Proxyservers, der für HTTP-Anforderungen verwendet wird.HTTPS_PROXY
: der Hostname oder die IP-Adresse des Proxyservers, der für HTTPS-Anforderungen verwendet wird.ALL_PROXY
: Der Hostname oder die IP-Adresse des Proxyservers, der fürHTTP_PROXY
HTTP- und HTTPS-Anforderungen verwendet wird oderHTTPS_PROXY
nicht definiert sind.NO_PROXY
: Eine durch Trennzeichen getrennte Liste mit Hostnamen, die aus der Proxyfunktion ausgeschlossen werden sollen.
PowerShell 7.4 hat Unterstützung für den Brotli-Komprimierungsalgorithmus hinzugefügt.