Invoke-WebRequest
Pobiera zawartość ze strony internetowej w Internecie.
Składnia
StandardMethod (Domyślna)
Invoke-WebRequest
[-Uri] <Uri>
[-UseBasicParsing]
[-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>]
StandardMethodNoProxy
Invoke-WebRequest
[-Uri] <Uri>
[-UseBasicParsing]
[-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>]
CustomMethod
Invoke-WebRequest
[-Uri] <Uri>
-CustomMethod <String>
[-UseBasicParsing]
[-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>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
CustomMethodNoProxy
Invoke-WebRequest
[-Uri] <Uri>
-CustomMethod <String>
[-UseBasicParsing]
[-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>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-NoProxy]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
Opis
Polecenie Invoke-WebRequest cmdlet wysyła żądania HTTP i HTTPS do strony internetowej lub usługi internetowej. Analizuje odpowiedź i zwraca kolekcje łączy, obrazów i innych znaczących elementów HTML.
Ten cmdlet został wprowadzony w programie PowerShell 3.0.
Począwszy od programu PowerShell 7.0, Invoke-WebRequest obsługuje konfigurację serwera proxy zdefiniowaną przez zmienne środowiskowe. Zobacz sekcję Uwagi tego artykułu.
Ważne
Przykłady w tym artykule odwołują się do hostów w domenie contoso.com . Jest to fikcyjna domena używana przez firmę Microsoft na potrzeby przykładów. Przykłady zostały zaprojektowane tak, aby pokazać, jak używać poleceń cmdlet.
Jednak ponieważ contoso.com witryny nie istnieją, przykłady nie działają. Dostosuj przykłady do hostów w danym środowisku.
Od PowerShell 7.4, domyślne kodowanie znaków dla żądań to UTF-8 zamiast ASCII. Jeśli potrzebujesz innego kodowania, musisz ustawić atrybut charset w nagłówku Content-Type.
Przykłady
Przykład 1. Wysyłanie żądania internetowego
W tym przykładzie użyto Invoke-WebRequest polecenia cmdlet do wysłania żądania internetowego do witryny Bing.com.
$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
Pierwsze polecenie wystawia żądanie i zapisuje odpowiedź w zmiennej $Response.
Drugie polecenie pobiera dowolne pole wejściowe, w którym właściwość Name jest podobna do "* Value". Przefiltrowane wyniki są przesyłane potokiem, aby Select-Object wybrać właściwości Nazwa i Wartość .
Przykład 2. Używanie stanowej usługi internetowej
W tym przykładzie pokazano, jak używać Invoke-WebRequest polecenia cmdlet z stanową usługą internetową.
$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
Pierwsze wywołanie do Invoke-WebRequest wysyłania żądania logowania. Polecenie określa wartość Session parametru SessionVariable . Po zakończeniu wykonywania polecenia zmienna $LoginResponse zawiera obiekt BasicHtmlWebResponseObject , a zmienna $SessionWebRequestSession zawiera obiekt. Spowoduje to zalogowanie użytkownika do witryny.
Drugie wywołanie pobierania Invoke-WebRequest profilu użytkownika, które wymaga zalogowania użytkownika do witryny. Dane sesji przechowywane w zmiennej $Session udostępniają pliki cookie sesji do witryny utworzonej podczas logowania.
Przykład 3. Pobieranie linków ze strony internetowej
Ten przykład pobiera linki na stronie internetowej. Używa Invoke-WebRequest polecenia cmdlet do pobierania zawartości strony internetowej. Następnie używa właściwości Links obiektu BasicHtmlWebResponseObject zwracającego Invoke-WebRequest i właściwości Href każdego łącza.
(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href
Przykład 4. Zapisywanie zawartości odpowiedzi do pliku przy użyciu kodowania zdefiniowanego na żądanej stronie
W tym przykładzie użyto Invoke-WebRequest polecenia cmdlet do pobrania zawartości strony internetowej strony dokumentacji programu PowerShell.
$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()
}
Pierwsze polecenie pobiera stronę i zapisuje obiekt odpowiedzi w zmiennej $Response .
Drugie polecenie tworzy narzędzie StreamWriter do zapisywania zawartości odpowiedzi w pliku. Właściwość Kodowanie obiektu odpowiedzi służy do ustawiania kodowania dla pliku.
Ostatnie kilka poleceń zapisuje właściwość Content w pliku, a następnie usuwa element StreamWriter.
Należy pamiętać, że właściwość Kodowanie ma wartość null, jeśli żądanie internetowe nie zwraca zawartości tekstowej.
Przykład 5. Przesyłanie pliku danych wieloczęściowych/formularzy
W tym przykładzie użyto Invoke-WebRequest polecenia cmdlet przekazywania pliku jako multipart/form-data przesłania. Plik C:\document.txt jest przesyłany jako pole document formularza z Content-Type wartością 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'
Przykład 6. Uproszczone przesyłanie danych wieloczęściowych/formularzy
Niektóre interfejsy API wymagają przesłania multipart/form-data plików i różnorodnej zawartości. W tym przykładzie pokazano aktualizowanie profilu użytkownika.
$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
Formularz profilu wymaga następujących pól: firstName, lastName, email, avatar, birthdayi hobbies. API oczekuje dostarczenia obrazu zdjęcia profilowego użytkownika w polu avatar. Interfejs API akceptuje również wiele wpisów hobbies do przesłania w tym samym formularzu.
Podczas tworzenia $Form HashTable nazwy kluczy są używane jako nazwy pól formularza. Domyślnie wartości tabeli HashTable są konwertowane na ciągi.
Jeśli jest obecna wartość System.IO.FileInfo, zawartość pliku zostanie przesłana. Jeśli istnieje kolekcja, taka jak tablice lub listy, pole formularza jest przesyłane wiele razy.
Przy użyciu Get-Item klucza avatarFileInfo obiekt jest ustawiany jako wartość. Wynikiem jest to, że dane obrazu dla jdoe.png są przesyłane.
Po podaniu listy do klucza hobbies, pole hobbies jest obecne w przesłanych danych tyle razy, ile jest elementów na liście.
Przykład 7. Przechwytywanie komunikatów o niepowodzeniu powodzenia z polecenia Invoke-WebRequest
Gdy Invoke-WebRequest napotka komunikat HTTP bez powodzenia (404, 500 itp.), zwraca brak danych wyjściowych i zgłasza błąd zakończenia. Aby przechwycić błąd i wyświetlić StatusCode można ująć wykonywanie w bloku try/catch.
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
Błąd zakończenia jest przechwycony przez catch blok, który pobiera kod stanu z obiektu Exception .
Przykład 8. Pobieranie wielu plików w tym samym czasie
Polecenie Invoke-WebRequest cmdlet może pobrać tylko jeden plik naraz. W poniższym przykładzie użyto Start-ThreadJob metody do utworzenia wielu zadań wątku w celu pobrania wielu plików w tym samym czasie.
$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
}
Przykład 9. Pomijanie walidacji nagłówka
Domyślnie polecenie cmdlet Invoke-WebRequest weryfikuje wartości dobrze znanych nagłówków, które mają format wartości zdefiniowany przez standardy. W poniższym przykładzie pokazano, jak ta walidacja może zgłosić błąd i jak można użyć parametru SkipHeaderValidation, aby uniknąć sprawdzania poprawności wartości punktów końcowych, które tolerują nieprawidłowe sformatowane wartości.
$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 to usługa, która zwraca informacje o żądaniach internetowych i odpowiedziach na potrzeby rozwiązywania problemów. Zmienna $Uri jest przypisywana punktowi końcowemu usługi /headers, który zwraca nagłówki żądania jako treść swojej odpowiedzi.
Nagłówek żądania If-Match jest zdefiniowany w sekcji RFC-7232 3.1 i wymaga, aby wartość tego nagłówka została zdefiniowana z otaczającymi cudzysłowami. Zmienna $InvalidHeaders ma przypisaną tabelę skrótów, w której wartość If-Match jest nieprawidłowa, ponieważ jest zdefiniowana jako 12345 zamiast "12345".
Wywołanie Invoke-WebRequest z nieprawidłowymi nagłówkami zwraca błąd informujący, że wartość sformatowana jest nieprawidłowa. Żądanie nie jest wysyłane do punktu końcowego.
Wywołanie Invoke-WebRequest za pomocą parametru SkipHeaderValidation ignoruje błąd weryfikacji i wysyła żądanie do punktu końcowego. Ponieważ punkt końcowy toleruje niezgodne wartości nagłówka, polecenie cmdlet zwraca obiekt odpowiedzi bez błędu.
Przykład 10: Wysyłanie żądania przy użyciu protokołu HTTP 2.0
Ten przykład pobiera linki na stronie internetowej przy użyciu protokołu HTTP 2.0. Używa Invoke-WebRequest polecenia cmdlet do pobierania zawartości strony internetowej. Następnie używa właściwości Links obiektu BasicHtmlWebResponseObject zwracającego Invoke-WebRequest i właściwości Href każdego łącza.
(Invoke-WebRequest -Uri 'https://aka.ms/pscore6-docs' -HttpVersion 2.0).Links.Href
Przykład 11: Wysyłanie żądania do aplikacji gniazda systemu Unix
Niektóre aplikacje, takie jak Docker, uwidaczniają gniazdo systemu Unix na potrzeby komunikacji. Ten przykład wykonuje zapytania dotyczące listy obrazów platformy Docker przy użyciu interfejsu API platformy Docker. Cmdlet nawiązuje połączenie z demonem Dockera przy użyciu gniazda systemu Unix.
Invoke-WebRequest -Uri "http://localhost/v1.40/images/json/" -UnixSocket "/var/run/docker.sock"
Parametry
-AllowInsecureRedirect
Umożliwia przekierowywanie z protokołu HTTPS do protokołu HTTP. Domyślnie każde żądanie przekierowane z protokołu HTTPS do protokołu HTTP powoduje wystąpienie błędu i żądanie zostało przerwane, aby zapobiec przypadkowej komunikacji w postaci zwykłego tekstu za pośrednictwem nieszyfrowanych połączeń. Aby zastąpić to zachowanie na własną odpowiedzialność, użyj parametru AllowInsecureRedirect.
Ten parametr został dodany w programie PowerShell 7.4.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-AllowUnencryptedAuthentication
Umożliwia wysyłanie poświadczeń i wpisów tajnych za pośrednictwem nieszyfrowanych połączeń. Domyślnie podanie opcji Poświadczenie lub uwierzytelnianie z identyfikatorem URI, które nie zaczyna się od wyniku, powoduje błąd i żądanie zostało przerwane, aby zapobiec przypadkowej komunikacji wpisów tajnych w postaci zwykłego tekstu za pośrednictwem niezaszyfrowanych połączeń.https:// Aby zastąpić to zachowanie na własną odpowiedzialność, użyj parametru AllowUnencryptedAuthentication.
Ostrzeżenie
Użycie tego parametru nie jest bezpieczne i nie jest zalecane. Zapewnia ona tylko zgodność ze starszymi systemami, które nie mogą zapewnić zaszyfrowanych połączeń. Używasz na własne ryzyko.
Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Authentication
Określa jawny typ uwierzytelniania do użycia dla żądania. Wartość domyślna to Brak. Nie można użyć parametru Authentication z parametrem UseDefaultCredentials.
Dostępne opcje uwierzytelniania:
-
None: jest to opcja domyślna, gdy nie podano uwierzytelniania. Nie jest używane jawne uwierzytelnianie. -
Basic: wymaga poświadczenia . Poświadczenia są wysyłane jako nagłówek uwierzytelnianiaAuthorization: Basicpodstawowego RFC 7617 w formaciebase64(user:password). -
Bearer: wymaga parametru tokenu. Wysyła nagłówek RFC 6750Authorization: Bearerz podanym tokenem. -
OAuth: wymaga parametru tokenu. Wysyła nagłówek RFC 6750Authorization: Bearerz podanym tokenem.
Podanie authentication zastępuje wszystkie nagłówki Authorization dostarczone do Headers lub dołączone do WebSession.
Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | WebAuthenticationType |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | None, Basic, Bearer, OAuth |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Body
Określa treść żądania. Ciało to zawartość żądania, które następuje po nagłówkach.
Możesz również przekazać wartość ciała do Invoke-WebRequest.
Parametr Ciało może być użyty do określania listy parametrów zapytania lub zawartości odpowiedzi. W przypadku parametrów zapytania polecenie cmdlet używa metody System.Net.WebUtility.UrlEncode do kodowania par klucz-wartość. Aby uzyskać więcej informacji na temat ciągów kodowania adresów URL, zobacz odwołania do metody UrlEncode().
Gdy dane wejściowe są żądaniem POST, a treść jest ciągiem , wartość po lewej stronie pierwszego znaku równości (=) jest ustawiona jako klucz w danych formularza, a pozostały tekst jest przypisany jako wartość. Aby określić wiele kluczy, użyj obiektu IDictionary, takiego jak tabela skrótów, dla Body.
Gdy dane wejściowe są żądaniem GET, a treść to IDictionary (zazwyczaj tabela skrótów), jest ona dodawana do identyfikatora URI jako parametry zapytania. W przypadku innych typów żądań (takich jak PATCH) treść jest ustawiana jako zawartość ciała żądania w standardowym formacie name=value z wartościami zakodowanymi w formacie URL.
Gdy dane wejściowe są obiektem System.Xml.XmlNode, a deklaracja XML określa kodowanie, kodowanie jest używane dla danych w żądaniu, chyba że zostanie zastąpione przez parametr ContentType.
Parametr Body akceptuje System.Net.Http.MultipartFormDataContent również obiekt.
multipart/form-data Ułatwia to żądania.
Gdy obiekt MultipartFormDataContent jest dostarczany dla elementu Body, wszystkie nagłówki powiązane z zawartością dostarczane do parametrów ContentType, Headers lub WebSession są zastępowane przez nagłówki zawartości obiektu MultipartFormDataContent. Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | Object |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Certificate
Określa certyfikat klienta używany na potrzeby bezpiecznego żądania internetowego. Wprowadź zmienną zawierającą certyfikat, polecenie lub wyrażenie, które uzyskuje certyfikat.
Aby znaleźć certyfikat, użyj Get-PfxCertificate lub użyj polecenia cmdlet Get-ChildItem na dysku Certificate (Cert:). Jeśli certyfikat jest nieprawidłowy lub nie ma wystarczającego autorytetu, polecenie kończy się niepowodzeniem.
Właściwości parametru
| Typ: | X509Certificate |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-CertificateThumbprint
Określa cyfrowy certyfikat klucza publicznego (X509) konta użytkownika z uprawnieniami do wysyłania żądania. Wprowadź odcisk palca certyfikatu.
Certyfikaty są używane w uwierzytelnianiu opartym na certyfikatach klienta. Certyfikaty można mapować tylko na konta użytkowników lokalnych, a nie na konta domeny.
Aby wyświetlić odcisk palca certyfikatu, użyj polecenia Get-Item lub Get-ChildItem, aby znaleźć certyfikat w Cert:\CurrentUser\My.
Uwaga / Notatka
Ta funkcja jest obsługiwana tylko na platformach systemu operacyjnego Windows.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ConnectionTimeoutSeconds
Określa, jak długo żądanie może być oczekiwane, zanim upłynie limit czasu. Wprowadź wartość w sekundach. Wartość domyślna 0 określa limit czasu nieokreślony.
Zapytanie systemu nazw domen (DNS) może trwać do 15 sekund, zanim zostanie zakończone lub zanim upłynie jego limit czasu. Jeśli twoje żądanie zawiera nazwę hosta, która wymaga rozpoznania, i ustawisz ConnectionTimeoutSeconds na wartość większą niż zero, ale mniejszą niż 15 sekund, może upłynąć 15 sekund lub więcej, zanim zostanie wywołany błąd WebException i twoje żądanie przekroczy limit czasu.
Ten parametr zastąpił parametr TimeoutSec w programie PowerShell 7.4. Możesz użyć TimeoutSec jako aliasu dla ConnectionTimeoutSeconds.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | Limit czasowy |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ContentType
Określa typ zawartości żądania internetowego.
Jeśli wartość ContentType zawiera format kodowania (jak charset), polecenie cmdlet używa tego formatu do kodowania treści żądania internetowego. Jeśli ContentType nie określi formatu kodowania, zostanie użyty domyślny format kodowania. Przykładem ContentType z formatem kodowania jest text/plain; charset=iso-8859-5, który określa alfabet łaciński/cyrylica.
Jeśli pominięto parametr, typ zawartości może być inny w zależności od używanej metody HTTP:
- W przypadku metody POST typ zawartości jest
application/x-www-form-urlencoded - W przypadku metody PUT typ zawartości to
application/json - W przypadku innych metod typ zawartości nie jest określony w żądaniu
Jeśli używasz parametru InFile do przekazania pliku, należy ustawić typ zawartości.
Zazwyczaj typ powinien być application/octet-stream. Należy jednak ustawić typ zawartości na podstawie wymagań punktu końcowego.
ContentType jest zastępowany, gdy treść jest obiektem MultipartFormDataContent.
Począwszy od programu PowerShell 7.4, jeśli używasz tego zarówno tego parametru, jak i parametru Headers do zdefiniowania nagłówka Content-Type, używana jest wartość określona w parametrze ContentType.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Credential
Określa konto użytkownika, które ma uprawnienia do wysyłania żądania. Wartość domyślna to bieżący użytkownik.
Wpisz nazwę użytkownika, taką jak User01 lub Domain01\User01, lub wprowadź obiekt PSCredential wygenerowany przez polecenie cmdlet Get-Credential.
Poświadczenia mogą być używane samodzielnie lub w połączeniu z niektórymi opcjami parametrów uwierzytelniania . Jeśli jest używany sam, dostarcza poświadczenia tylko do serwera zdalnego, gdy ten wysyła żądanie uwierzytelnienia. W przypadku użycia z opcjami uwierzytelniania poświadczenia są jawnie wysyłane.
Poświadczenia są przechowywane w obiekcie PSCredential, a hasło jest przechowywane jako SecureString.
Uwaga / Notatka
Aby uzyskać więcej informacji na temat ochrony danych SecureString, zobacz Jak bezpieczny jest protokół SecureString?.
Właściwości parametru
| Typ: | PSCredential |
| Domyślna wartość: | Current user |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-CustomMethod
Określa niestandardową metodę używaną dla żądania internetowego. Może to być używane, jeśli metoda żądania wymagana przez punkt końcowy nie jest dostępna w metodzie . Metoda i CustomMethod nie mogą być używane razem.
W tym przykładzie żądanie HTTP do TEST interfejsu API:
Invoke-WebRequest -Uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'
Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | CENTYMETR |
Zestawy parametrów
CustomMethod
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CustomMethodNoProxy
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-DisableKeepAlive
Wskazuje, że polecenie cmdlet ustawia wartość KeepAlive w nagłówku HTTP na wartość False. Domyślnie KeepAlive jest true. KeepAlive ustanawia trwałe połączenie z serwerem w celu ułatwienia kolejnych żądań.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Form
Konwertuje słownik na zgłoszenie typu multipart/form-data.
formularz nie może być używany z treścią.
Jeśli jest używany typ zawartości , jest on ignorowany.
Klucze słownika są używane jako nazwy pól formularza. Domyślnie wartości formularza są konwertowane na wartości ciągu.
Jeśli wartość jest obiektem System.IO.FileInfo, zawartość pliku binarnego jest przesyłana. Nazwa pliku jest przesyłana jako właściwość nazwy pliku . Typ MIME jest ustawiony jako application/octet-stream.
Get-Item można użyć do uproszczenia dostarczania obiektu System.IO.FileInfo.
$Form = @{
resume = Get-Item 'C:\Users\jdoe\Documents\John Doe.pdf'
}
Jeśli wartość jest typem kolekcji, takim jak Tablice lub Listy, pole for jest przesyłane wiele razy. Wartości listy są domyślnie traktowane jako ciągi. Jeśli wartość jest obiektem System.IO.FileInfo, zawartość pliku binarnego jest przesyłana. Kolekcje zagnieżdżone nie są obsługiwane.
$Form = @{
tags = 'Vacation', 'Italy', '2017'
pictures = Get-ChildItem 'C:\Users\jdoe\Pictures\2017-Italy\'
}
W powyższym przykładzie tags pole jest dostarczane trzy razy w formularzu, raz dla każdego z Vacation, Italyi 2017. Pole pictures jest również przesyłane raz dla każdego pliku w folderze 2017-Italy . Zawartość binarna plików w tym folderze jest przesyłana jako wartości.
Ta funkcja została dodana w programie PowerShell 6.1.0.
Właściwości parametru
| Typ: | IDictionary |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Headers
Określa nagłówki żądania internetowego. Wprowadź tabelę skrótu lub słownik.
Nagłówki powiązane z zawartością, takie jak Content-Type są zastępowane, gdy obiekt MultipartFormDataContent jest dostarczany dla treści.
Począwszy od programu PowerShell 7.4, jeśli używasz tego parametru do definiowania nagłówka Content-Type i używania parametru ContentType, używana jest wartość określona w parametrze ContentType.
Właściwości parametru
| Typ: | IDictionary |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-HttpVersion
Określa wersję PROTOKOŁU HTTP używaną dla żądania. Wartość domyślna to 1.1.
Prawidłowe wartości to:
- 1.0
- 1.1
- 2.0
- 3.0
Właściwości parametru
| Typ: | Version |
| Domyślna wartość: | 1.1 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-InFile
Pobiera zawartość treści żądania internetowego z pliku. Wprowadź ścieżkę i nazwę pliku. Jeśli pominięto ścieżkę, wartość domyślna to bieżąca lokalizacja.
Należy również ustawić typ zawartości żądania. Aby na przykład przekazać plik, należy ustawić typ zawartości. Zazwyczaj typ powinien być application/octet-stream. Należy jednak ustawić typ zawartości na podstawie wymagań punktu końcowego.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-MaximumRedirection
Określa, ile razy program PowerShell przekierowuje połączenie z alternatywnym identyfikatorem URI (Uniform Resource Identifier) przed niepowodzeniem połączenia. Wartość domyślna to 5. Wartość 0 (zero) uniemożliwia wszystkie przekierowania.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | 5 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-MaximumRetryCount
Określa, ile razy program PowerShell ponawia próbę połączenia, gdy zostanie odebrany kod błędu z zakresu od 400 do 599 włącznie lub 304. Zobacz również parametr RetryIntervalSec w celu określenia interwału między ponownymi próbami.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Method
Określa metodę używaną dla żądania internetowego. Dopuszczalne wartości tego parametru to:
DefaultDeleteGetHeadMergeOptionsPatchPostPutTrace
Parametr CustomMethod można użyć dla metod żądań, których nie wymieniono powyżej.
Właściwości parametru
| Typ: | WebRequestMethod |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
StandardMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
StandardMethodNoProxy
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-NoProxy
Wskazuje, że polecenie cmdlet nie powinno używać serwera proxy do dotarcia do miejsca docelowego. Jeśli musisz pominąć serwer proxy skonfigurowany w środowisku, użyj tego przełącznika. Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
StandardMethodNoProxy
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CustomMethodNoProxy
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-OperationTimeoutSeconds
Ten limit czasu dotyczy odczytów danych w strumieniu, a nie do czasu strumienia jako całości. Wartość domyślna, 0, określa limit czasu nieokreślony.
Ustawienie wartości na 30 sekund oznacza, że każde opóźnienie dłuższe niż 30 sekund między danymi w strumieniu kończy żądanie. Duży plik, który trwa kilka minut do pobrania, nie zakończy się, chyba że strumień zostanie zatrzymany przez ponad 30 sekund.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-OutFile
Domyślnie Invoke-WebRequest zwraca wyniki do potoku. Jeśli używasz parametru OutFile, wyniki są zapisywane w określonym pliku i nie są zwracane do potoku. Wprowadź ścieżkę i nazwę pliku. Aby wysłać wyniki do pliku i do potoku, dodaj parametr PassThru.
Jeśli pominięto ścieżkę, wartość domyślna to bieżąca lokalizacja. Nazwa jest traktowana jako dosłowna ścieżka.
Nazwy zawierające nawiasy ([]) muszą być ujęte w pojedyncze cudzysłowy (').
Począwszy od programu PowerShell 7.4, można określić ścieżkę folderu bez nazwy pliku. Gdy to zrobisz, polecenie używa nazwy pliku z ostatniego segmentu rozpoznanego identyfikatora URI po wszelkich przekierowaniach. Po określeniu ścieżki folderu dla OutFilenie można użyć parametru Resume.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-PassThru
Wskazuje, że polecenie cmdlet zwraca wyniki oprócz zapisywania ich w pliku. Ten parametr jest prawidłowy tylko wtedy, gdy parametr OutFile jest również używany w poleceniu .
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-PreserveAuthorizationOnRedirect
Wskazuje, że polecenie cmdlet powinno zachować nagłówek Authorization, jeśli jest obecny, podczas przekierowań.
Domyślnie polecenie cmdlet usuwa nagłówek Authorization przed przekierowaniem. Określenie tego parametru powoduje wyłączenie tej logiki w przypadkach, w których nagłówek musi zostać wysłany do lokalizacji przekierowania.
Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-PreserveHttpMethodOnRedirect
Wskazuje, że polecenie cmdlet powinno zachować metodę żądania dla wszystkich przekierowań.
Domyślnie polecenie cmdlet zmienia metodę na GET w wyniku przekierowania. Określenie tego parametru wyłącza tę logikę, aby upewnić się, że docelowa metoda może być używana z przekierowaniem.
Ta funkcja została dodana w programie PowerShell 7.4.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Proxy
Określa serwer proxy dla żądania, zamiast łączyć się bezpośrednio z zasobem internetowym. Wprowadź identyfikator URI serwera proxy sieciowego.
Właściwości parametru
| Typ: | Uri |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
StandardMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CustomMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ProxyCredential
Określa konto użytkownika, które ma uprawnienia do korzystania z serwera proxy określonego przez parametr proxy . Wartość domyślna to bieżący użytkownik.
Wpisz nazwę użytkownika, taką jak User01 lub Domain01\User01, lub wprowadź obiekt PSCredential, taki jak jeden wygenerowany przez polecenie cmdlet Get-Credential.
Ten parametr jest prawidłowy tylko wtedy, gdy parametr serwera proxy jest również używany w poleceniu . Nie można użyć parametrów ProxyCredential i ProxyUseDefaultCredentials w tym samym poleceniu.
Właściwości parametru
| Typ: | PSCredential |
| Domyślna wartość: | Current user |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
StandardMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CustomMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-ProxyUseDefaultCredentials
Wskazuje, że polecenie cmdlet używa poświadczeń bieżącego użytkownika w celu uzyskania dostępu do serwera proxy określonego przez parametr serwera proxy
Ten parametr jest prawidłowy tylko wtedy, gdy parametr serwera proxy jest również używany w poleceniu . Nie można użyć parametrów ProxyCredential i ProxyUseDefaultCredentials w tym samym poleceniu.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
StandardMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CustomMethod
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Resume
Wykonuje najlepszą próbę wznowienia pobierania pliku częściowego. Wznów wymaga pliku OutFile.
Resume działa tylko na rozmiarze pliku lokalnego i pliku zdalnego i nie wykonuje innej weryfikacji, czy plik lokalny i plik zdalny są takie same.
Jeśli rozmiar pliku lokalnego jest mniejszy niż rozmiar pliku zdalnego, polecenie cmdlet próbuje wznowić pobieranie pliku i dołączyć pozostałe bajty na końcu pliku.
Jeśli rozmiar pliku lokalnego jest taki sam jak rozmiar pliku zdalnego, nie zostanie podjęta żadna akcja, a polecenie cmdlet zakłada, że pobieranie zostało już ukończone.
Jeśli rozmiar pliku lokalnego jest większy niż rozmiar pliku zdalnego, plik lokalny zostanie zastąpiony i cały plik zdalny zostanie ponownie pobrany. To zachowanie jest takie samo jak użycie OutFile bez Resume.
Jeśli serwer zdalny nie obsługuje wznawiania pobierania, plik lokalny zostanie zastąpiony i cały plik zdalny zostanie ponownie pobrany. To zachowanie jest takie samo jak użycie OutFile bez Resume.
Jeśli plik lokalny nie istnieje, zostanie utworzony plik lokalny i zostanie pobrany cały plik zdalny. To zachowanie jest takie samo jak użycie OutFile bez Resume.
Ta funkcja została dodana w programie PowerShell 6.1.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-RetryIntervalSec
Określa interwał między ponownymi próbami połączenia, gdy zostanie odebrany kod błędu z zakresu od 400 do 599 włącznie lub 304.
Zobacz również parametr MaximumRetryCount określający liczbę ponownych prób. Wartość musi zawierać się między 1 a [int]::MaxValue.
Jeśli kod błędu to 429, a odpowiedź zawiera właściwość Retry-After w nagłówkach, polecenie cmdlet używa tej wartości dla interwału ponawiania, nawet jeśli ten parametr jest określony.
Właściwości parametru
| Typ: | Int32 |
| Domyślna wartość: | 5 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SessionVariable
Określa zmienną, dla której to polecenie cmdlet tworzy sesję żądania internetowego i zapisuje je w wartości.
Wprowadź nazwę zmiennej bez symbolu znaku dolara ($).
Po określeniu zmiennej sesji Invoke-WebRequest tworzy obiekt sesji żądania sieci Web i przypisuje go do zmiennej o określonej nazwie w sesji programu PowerShell. Możesz użyć zmiennej w sesji, gdy tylko polecenie zostanie ukończone.
Przed programem PowerShell 7.4 sesja żądania internetowego nie jest trwałym połączeniem. Jest to obiekt, który zawiera informacje o połączeniu i żądaniu, w tym pliki cookie, poświadczenia, maksymalną wartość przekierowania i parametry agenta użytkownika. Możesz używać tego do udostępniania stanu i danych między żądaniami HTTP.
Począwszy od programu PowerShell 7.4, sesja żądania internetowego jest trwała, o ile właściwości sesji nie są zastępowane w kolejnym żądaniu. Kiedy tak się dzieje, polecenie cmdlet ponownie utworzy sesję przy użyciu nowych wartości. Sesje trwałe zmniejszają obciążenie dla powtarzających się żądań, dzięki czemu są znacznie szybsze.
Aby użyć sesji żądania sieci Web w kolejnych żądaniach sieci Web, określ zmienną sesji w wartości parametru WebSession. Program PowerShell używa danych w obiekcie sesji żądania internetowego podczas nawiązywania nowego połączenia. Aby zastąpić wartość w sesji żądania internetowego, użyj parametru cmdlet, takiego jak UserAgent lub Credential. Wartości parametrów mają pierwszeństwo przed wartościami w sesji żądania internetowego.
Nie można użyć parametrów SessionVariable i WebSession w tym samym poleceniu.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | SV |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SkipCertificateCheck
Pomija sprawdzanie poprawności certyfikatu. Obejmuje to wszystkie weryfikacje, takie jak wygaśnięcie, odwołanie, zaufany urząd główny itp.
Ostrzeżenie
Użycie tego parametru nie jest bezpieczne i nie jest zalecane. Ten przełącznik jest przeznaczony do użycia tylko na znanych hostach z samopodpisanym certyfikatem do celów testowych. Używasz na własne ryzyko.
Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SkipHeaderValidation
Wskazuje, że polecenie cmdlet powinno dodać nagłówki do żądania bez walidacji.
Ten przełącznik powinien być używany w przypadku witryn wymagających wartości nagłówka, które nie są zgodne ze standardami. Określenie tego przełącznika powoduje wyłączenie walidacji, aby umożliwić niezaznaczone przekazywanie wartości. Po określeniu wszystkie nagłówki są dodawane bez walidacji.
Ten przełącznik wyłącza walidację wartości przekazywanych do parametrów ContentType, Headers i UserAgent .
Ta funkcja została dodana w programie PowerShell 6.0.0.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SkipHttpErrorCheck
Ten parametr powoduje, że polecenie cmdlet ignoruje stany błędów HTTP i nadal przetwarza odpowiedzi. Odpowiedzi na błędy są rejestrowane w potoku dokładnie tak, jakby zakończyły się powodzeniem.
Ten parametr został wprowadzony w programie PowerShell 7.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SslProtocol
Ustawia protokoły SSL/TLS, które są dozwolone dla żądania internetowego. Domyślnie dozwolone są protokoły SSL/TLS obsługiwane przez system. SslProtocol umożliwia ograniczenie do określonych protokołów w celach zgodności.
Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru SslProtocol jako tablicy wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet łączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją i umożliwia skorzystanie z funkcji automatycznego uzupełniania dla wartości tablicy. Być może nie można zdefiniować wielu opcji na wszystkich platformach.
Uwaga / Notatka
Na platformach innych niż Windows może nie być możliwe podanie Tls lub Tls12 jako opcja.
Tls13 Obsługa programu nie jest dostępna we wszystkich systemach operacyjnych i musi zostać zweryfikowana dla poszczególnych systemów operacyjnych.
Ta funkcja została dodana w programie PowerShell 6.0.0 i dodano obsługę programu Tls13 PowerShell 7.1.
Właściwości parametru
| Typ: | WebSslProtocol |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | Default, Tls, Tls11, Tls12 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Token
Token OAuth lub Bearer do uwzględnienia w żądaniu. Token jest wymagany przez niektóre opcje uwierzytelniania. Nie można go używać niezależnie.
Token przyjmuje SecureString token zawierający. Aby ręcznie podać token, użyj następującego polecenia:
Invoke-WebRequest -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)
Ten parametr został wprowadzony w programie PowerShell 6.0.
Właściwości parametru
| Typ: | SecureString |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-TransferEncoding
Określa wartość dla nagłówka odpowiedzi HTTP kodowania transferu. Dopuszczalne wartości tego parametru to:
ChunkedCompressDeflateGZipIdentity
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Dopuszczalne wartości: | chunked, compress, deflate, gzip, identity |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-UnixSocket
Określa nazwę gniazda systemu Unix do nawiązania połączenia. Ten parametr jest obsługiwany w systemach unix i windows w wersji 1803 lub nowszej. Aby uzyskać więcej informacji na temat obsługi gniazd systemu Unix w systemie Windows, zobacz wpis na blogu "Windows/WSL Interop with AF_UNIX" ( Międzyoperacyjność Windows/WSL z AF_UNIX).
Ten parametr został dodany w programie PowerShell 7.4.
Właściwości parametru
| Typ: | UnixDomainSocketEndPoint |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Uri
Określa identyfikator URI (Uniform Resource Identifier) zasobu internetowego, do którego jest wysyłane żądanie internetowe. Wprowadź identyfikator URI. Ten parametr obsługuje tylko protokół HTTP lub HTTPS.
Ten parametr jest wymagany. Identyfikator URI nazwy parametru jest opcjonalny.
Właściwości parametru
| Typ: | Uri |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-UseBasicParsing
Ten parametr został przestarzały. Począwszy od programu PowerShell 6.0.0, wszystkie żądania sieci Web używają tylko podstawowego analizowania. Ten parametr jest uwzględniany tylko w przypadku zgodności z poprzednimi wersjami i użycie go nie ma wpływu na działanie polecenia cmdlet.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-UseDefaultCredentials
Wskazuje, że polecenie cmdlet używa poświadczeń bieżącego użytkownika do wysłania żądania sieciowego. Nie można tego używać z Authentication lub Credential i może nie być obsługiwane na wszystkich platformach.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-UserAgent
Określa ciąg agenta użytkownika dla żądania internetowego.
Domyślny agent użytkownika jest podobny do Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 z niewielkimi odmianami dla każdego systemu operacyjnego i platformy.
Aby przetestować witrynę internetową przy użyciu standardowego ciągu agenta użytkownika używanego przez większość przeglądarek internetowych, użyj właściwości klasy PSUserAgent, takich jak Chrome, Firefox, InternetExplorer, Opera i Safari.
Na przykład następujące polecenie używa ciągu agenta użytkownika dla programu Internet Explorer: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-WebSession
Określa sesję żądania internetowego. Wprowadź nazwę zmiennej, w tym znak dolara ($).
Aby zastąpić wartość w sesji żądania internetowego, użyj parametru cmdlet, takiego jak UserAgent lub Credential. Wartości parametrów mają pierwszeństwo przed wartościami w sesji żądania internetowego. Nagłówki powiązane z zawartością, takie jak Content-Type, również są zastępowane, gdy obiekt MultipartFormDataContent jest dostarczany dla treść.
W przeciwieństwie do sesji zdalnej sesja żądania sieci Web nie jest trwałym połączeniem. Jest to obiekt, który zawiera informacje o połączeniu i żądaniu, w tym pliki cookie, poświadczenia, maksymalną wartość przekierowania i parametry agenta użytkownika. Możesz używać tego do udostępniania stanu i danych między żądaniami HTTP.
Aby utworzyć sesję żądania internetowego, wprowadź nazwę zmiennej bez znaku dolara jako wartość parametru SessionVariable w poleceniu Invoke-WebRequest.
Invoke-WebRequest tworzy sesję i zapisuje ją w zmiennej. W kolejnych poleceniach użyj zmiennej jako wartości parametru WebSession.
Nie można użyć parametrów SessionVariable i WebSession w tym samym poleceniu.
Właściwości parametru
| Typ: | WebRequestSession |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
Object
Możesz przekazać treść żądania internetowego do tego polecenia cmdlet.
Dane wyjściowe
BasicHtmlWebResponseObject
To polecenie cmdlet zwraca obiekt odpowiedzi reprezentujący wynik żądania internetowego.
Uwagi
Program PowerShell zawiera następujące aliasy dla Invoke-WebRequest:
- Wszystkie platformy:
iwr
Począwszy od programu PowerShell 6.0.0 Invoke-WebRequest , obsługuje tylko podstawowe analizowanie.
Aby uzyskać więcej informacji, zobacz BasicHtmlWebResponseObject.
Ze względu na zmiany w programie .NET Core 3.1 program PowerShell 7.0 i nowsze używają właściwości HttpClient.DefaultProxy w celu określenia konfiguracji serwera proxy.
Wartość tej właściwości jest określana przez platformę:
- W przypadku systemu Windows: odczytuje konfigurację serwera proxy ze zmiennych środowiskowych. Jeśli te zmienne nie są zdefiniowane, właściwość pochodzi z ustawień serwera proxy użytkownika.
- W przypadku systemu macOS: odczytuje konfigurację serwera proxy ze zmiennych środowiskowych. Jeśli te zmienne nie są zdefiniowane, właściwość pochodzi z ustawień serwera proxy systemu.
- W przypadku systemu Linux: odczytuje konfigurację serwera proxy ze zmiennych środowiskowych. Jeśli te zmienne nie są zdefiniowane, właściwość inicjuje nieskonfigurowane wystąpienie, które pomija wszystkie adresy.
Zmienne środowiskowe używane do inicjowania DefaultProxy na platformach opartych na systemach Windows i Unix są następujące:
-
HTTP_PROXY: nazwa hosta lub adres IP serwera proxy używanego na żądaniach HTTP. -
HTTPS_PROXY: nazwa hosta lub adres IP serwera proxy używanego w żądaniach HTTPS. -
ALL_PROXY: nazwa hosta lub adres IP serwera proxy używanego w żądaniach HTTP i HTTPS w przypadku, gdyHTTP_PROXYlubHTTPS_PROXYnie są zdefiniowane. -
NO_PROXY: rozdzielona przecinkami lista nazw hostów, które powinny być wykluczone z serwera proxy.
Program PowerShell 7.4 dodał obsługę algorytmu kompresji Brotli.