共用方式為


Invoke-WebRequest

從因特網上的網頁取得內容。

Syntax

Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      [-Method <WebRequestMethod>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      [-Method <WebRequestMethod>]
      -NoProxy
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      -CustomMethod <String>
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      -CustomMethod <String>
      -NoProxy
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]

Description

Cmdlet 會將 Invoke-WebRequest HTTP 和 HTTPS 要求傳送至網頁或 Web 服務。 它會剖析回應並傳回連結、影像及其他主要 HTML 元素的集合。

此 Cmdlet 是在 PowerShell 3.0 中引進。

從 PowerShell 7.0 開始, Invoke-WebRequest 支援環境變數所定義的 Proxy 組態。 請參閱本文的 附註 一節。

重要

本文中的範例參考網域中的 contoso.com 主機。 這是 Microsoft 用於範例的虛構網域。 這些範例的設計目的是示範如何使用 Cmdlet。 不過,由於 contoso.com 網站不存在,因此範例無法運作。 調整範例以在您的環境中裝載。

範例

範例 1:傳送 Web 要求

此範例會 Invoke-WebRequest 使用 Cmdlet 將 Web 要求傳送至 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

第一個命令會發出要求,並將回應儲存在變數中 $Response

第二個命令會取得 Name 屬性類似"* Value"的任何 InputField。 篩選的結果會透過管線傳送至 Select-Object 以選取 [名稱 ] 和 [ ] 屬性。

範例 2:使用具狀態 Web 服務

此範例示範如何搭配具狀態 Web 服務使用 Invoke-WebRequest Cmdlet。

$Body = @{
    User = 'jdoe'
    password = 'P@S$w0rd!'
}
$LoginResponse = Invoke-WebRequest 'https://www.contoso.com/login/' -SessionVariable 'Session' -Body $Body -Method 'POST'

$Session

$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session

$ProfileResponse

傳送登入要求的第一次呼叫 Invoke-WebRequest 。 此命令會指定 -SessionVariable 參數值的 “Session” 值,並將結果儲存在變數中 $LoginResponse 。 當命令完成時, $LoginResponse 變數會包含 , BasicHtmlWebResponseObject$Session 變數則包含 WebRequestSession 物件。 這會將用戶記錄到網站。

本身的呼叫 $Session 會顯示 WebRequestSession 變數中的物件。

要擷取使用者配置檔的第二個呼叫 Invoke-WebRequest ,需要使用者登入網站。 儲存在變數中的 $Session 會話數據是用來提供會話 Cookie 給登入期間所建立的網站。 結果會儲存在變數中 $ProfileResponse

本身的呼叫 $ProfileResponse 會在 變數中顯示 BasicHtmlWebResponseObject

範例 3:從網頁取得連結

本範例會取得網頁中的連結。 它會使用 Invoke-WebRequest Cmdlet 來取得網頁內容。 然後它會使用 傳回之的 BasicHtmlWebResponseObjectInvoke-WebRequestLinks 屬性,以及每個連結的 Href 屬性。

(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href

範例 4:使用要求頁面中定義的編碼,將響應內容寫入檔案。

此範例會 Invoke-WebRequest 使用 Cmdlet 來擷取 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()
}

第一個命令會擷取頁面,並將響應物件儲存在變數中 $Response

第二個 StreamWriter 命令會建立 ,以用來將響應內容寫入檔案。 響應物件的 Encoding 屬性是用來設定檔案的編碼方式。

最後幾個命令會將 Content 屬性寫入檔案, StreamWriter然後處置 。

請注意,如果 Web 要求未傳回文字內容, Encoding 屬性會是 Null。

範例 5:提交多部分/表單數據檔

此範例會 Invoke-WebRequest 使用 Cmdlet 將檔案上傳為 multipart/form-data 提交。 c:\document.txt檔案會提交為具有的text/plain表單域documentContent-Type

$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'

範例 6:簡化的多部分/表單數據提交

某些 API 需要 multipart/form-data 提交才能上傳檔案和混合內容。 此範例示範如何更新使用者配置檔。

$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

設定檔案表單需要下列欄位:firstName、、lastNameemailavatarbirthday、 和 hobbies。 API 預期會在欄位中提供使用者配置檔圖片的 avatar 影像。 API 也接受以相同形式提交的多個 hobbies 專案。

建立 $Form HashTable時,索引鍵名稱會當做表單域名稱使用。 根據預設,HashTable 的值會轉換成字串。 如果 存在 System.IO.FileInfo 值,則會提交檔案內容。 如果存在數位或清單之類的集合,則會多次提交表單域。

藉由在 Get-Item 索引鍵上使用 avatar ,對象 FileInfo 會設定為 值。 結果是提交的 jdoe.png 影像數據。

藉由提供清單給 hobbies 索引鍵,字段 hobbies 就會出現在每個清單專案的提交中一次。

範例 7:從 Invoke-WebRequest 攔截非成功訊息

Invoke-WebRequest 遇到非成功的 HTTP 訊息 (404、500 等 ) 時,它不會傳回任何輸出並擲回終止錯誤。 若要攔截錯誤並檢視 StatusCode ,您可以在 區塊中 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

區塊會catch攔截終止錯誤,它會從 Exception 物件擷取 StatusCode

參數

-AllowUnencryptedAuthentication

允許透過未加密連線傳送認證和秘密。 根據預設,提供 [ 認證 ] 或任何 [ 驗證 ] 選項的 URI 不會開始 https:// 會產生錯誤,而且要求已中止,以防止在未加密的連線上不小心以純文字通訊秘密。 若要以您自己的風險覆寫此行為,請提供 AllowUnencryptedAuthentication 參數。

警告

使用此參數並不安全,不建議使用。 它僅適用於無法提供加密連線的舊版系統相容性。 以您自己的風險使用。

此功能已在PowerShell 6.0.0中新增。

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

-Authentication

指定要用於要求的明確驗證類型。 預設值為 [無]。 Authentication 參數無法與 UseDefaultCredentials 參數搭配使用。

可用的驗證選項:

  • None:未提供 驗證 時,這是預設選項。 不會使用明確的驗證。
  • Basic:需要 認證。 認證將用來以 格式base64(user:password)傳送 RFC 7617 基本身份驗證Authorization: Basic標頭。
  • Bearer:需要 Token 參數。 使用提供的令牌傳送 RFC 6750 Authorization: Bearer 標頭。
  • OAuth:需要 Token 參數。 使用提供的令牌傳送 RFC 6750 Authorization: Bearer 標頭。

提供驗證會覆寫提供給標頭或Authorization包含在 WebSession 中的任何標頭

此功能已在PowerShell 6.0.0中新增。

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

-Body

指定要求的主體。 主體為標頭之後的要求內容。 您也可以使用管線將主體值傳送至 Invoke-WebRequest

Body 參數可用來指定查詢參數的清單,或指定回應的內容。

當輸入是 GET 要求,而本文 IDictionary 通常是 (,則哈希表) ,本文會新增至 URI 作為查詢參數。 對於其他要求類型 (例如 POST) ,本文會設定為標準 name=value 格式的要求本文值。

Body 參數也可以接受 System.Net.Http.MultipartFormDataContent 物件。 multipart/form-data這有助於要求。 為 Body 提供 MultipartFormDataContent 物件時,提供給 ContentTypeHeadersWebSession 參數的任何內容相關標頭,會由 MultipartFormDataContent 物件的 Content 標頭覆寫。 此功能已在PowerShell 6.0.0中新增。

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

-Certificate

指定用於安全 Web 要求的客戶端憑證。 輸入包含憑證的變數,或可取得憑證的命令或運算式。

若要尋找憑證,請使用 Get-PfxCertificate 或使用 Get-ChildItem 憑證 (Cert:) 磁碟驅動器中的 Cmdlet。 如果憑證無效或沒有足夠的授權單位,命令就會失敗。

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

-CertificateThumbprint

指定具有傳送要求權限之使用者帳戶的數位公開金鑰憑證 (X509)。 請輸入憑證的憑證指紋。

憑證將用於用戶端憑證式驗證。 它們只能對應至本機用戶帳戶;它們無法與網域帳戶搭配使用。

若要取得憑證指紋,請使用 Get-Item PowerShell Cert: 磁碟驅動器中的或 Get-ChildItem 命令。

注意

這項功能目前僅在 Windows OS 平臺上受到支援。

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

-ContentType

指定 Web 要求的內容類型。

如果省略此參數,且要求方法為 POST, Invoke-WebRequest 請將內容類型設定為 application/x-www-form-urlencoded。 否則,不會在呼叫中指定內容類型。

當為 Body 提供 MultipartFormDataContent 物件時,就會覆寫 ContentType

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

-Credential

指定具有傳送要求權限的使用者帳戶。 預設為目前使用者。

輸入用戶名稱,例如User01Domain01\User01,或輸入 Cmdlet 所產生的 Get-CredentialPSCredential 物件。

認證 可以單獨使用,或與特定 驗證 參數選項搭配使用。 單獨使用時,只有在遠端伺服器傳送驗證挑戰要求時,才會將認證提供給遠端伺服器。 搭配 驗證 選項使用時,系統會明確傳送認證。

認證會儲存在 PSCredential 物件中,密碼會儲存為 SecureString

注意

如需 SecureString 數據保護的詳細資訊,請參閱 SecureString 有多安全?

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

-CustomMethod

指定用於 Web 要求的自訂方法。 如果端點所需的要求方法不是方法上的可用選項,就可以使用此 方法方法CustomMethod 不能一起使用。

此範例會對 TEST API 提出 HTTP 要求:

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

此功能已在PowerShell 6.0.0中新增。

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

-DisableKeepAlive

表示 Cmdlet 會將 HTTP 標頭中的 KeepAlive 值設定為 False。 根據預設, KeepAliveTrueKeepAlive 會建立伺服器持續連線,有助於後續要求。

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

-Form

將字典轉換成 multipart/form-data 提交。 表單 不能與 Body 搭配使用。 如果使用 ContentType ,則會忽略它。

字典的索引鍵會當做窗體域名使用。 根據預設,表單值會轉換成字串值。

如果此值是 System.IO.FileInfo 物件,則會提交二進位文件內容。 檔案的名稱會提交為 filename 屬性。 MIME 型態設定為 application/octet-streamGet-Item 可用來簡化 提供 System.IO.FileInfo 物件。

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

如果值為集合類型,例如 Arrays 或 清單,則會多次提交 for 字段。 清單的值預設會視為字串。 如果此值是 System.IO.FileInfo 物件,則會提交二進位文件內容。 不支援巢狀集合。

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

在上述範例中,tags字段會在窗體中提供三次,每個、 Italy2017Vacation提供一次。 欄位 pictures 也會針對資料夾中的每個檔案 2017-Italy 提交一次。 該資料夾中檔案的二進位內容會提交為值。

此功能已在PowerShell 6.1.0中新增。

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

-Headers

指定 Web 要求的標頭。 輸入雜湊表或字典。

若要設定 UserAgent 標頭,請使用 UserAgent 參數。 您無法使用此參數來指定 User-Agent 或 Cookie 標頭。

內容相關標頭,例如Content-Type在為 Body 提供 MultipartFormDataContent 物件時覆寫。

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

-InFile

從檔案取得 Web 要求的內容。 輸入路徑和檔案名稱。 若省略路徑,則預設為目前位置。

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

-MaximumRedirection

指定在連線失敗之前,PowerShell 會將連線重新導向至替代統一資源標識碼 (URI) 的次數。 預設值為 5。 值為 0 (零) 將禁止所有重新導向。

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

-MaximumRetryCount

指定在收到 400 到 599 之間的失敗碼或 304 時,PowerShell 重試連線的次數。 另請參閱 RetryIntervalSec 參數,以指定重試次數。

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

-Method

指定用於 Web 要求的方法。 此參數可接受的值為:

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

CustomMethod 參數可用於上述未列出的 Request 方法。

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

-NoProxy

表示 Cmdlet 不應該使用 Proxy 來到達目的地。 當您需要略過環境中設定的 Proxy 時,請使用此參數。 此功能已在PowerShell 6.0.0中新增。

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

-OutFile

指定此 Cmdlet 儲存回應本文的輸出檔。 輸入路徑和檔案名稱。 若省略路徑,則預設為目前位置。 名稱會被視為常值路徑。 包含括弧 () [] 的名稱必須以單引弧括住 (') 。

根據預設, Invoke-WebRequest 會將結果傳回至管線。 若要傳送結果至檔案與管線,請使用 Passthru 參數。

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

-PassThru

指出 Cmdlet 除了將它們寫入檔案之外,還會傳回結果。 只有當命令中也使用 OutFile 參數時,此參數才會有效。

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

-PreserveAuthorizationOnRedirect

指出 Cmdlet 應該在重新導向之間保留 Authorization 標頭。

根據預設,Cmdlet 會在重新導向之前移除 Authorization 標頭。 針對需要將標頭傳送至重新導向位置的情況,指定此參數會停用此邏輯。

此功能已在PowerShell 6.0.0中新增。

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

-Proxy

指定要求的 Proxy 伺服器,而不是直接連線到因特網資源。 輸入網路 Proxy 伺服器的 URI。

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

-ProxyCredential

指定具有使用 Proxy 參數所指定 Proxy 伺服器之權限的使用者帳戶。 預設為目前使用者。

輸入使用者名稱,例如 User01Domain01\User01User@Domain.Com或輸入 PSCredential 物件,例如 Cmdlet 所產生的 Get-Credential 物件。

只有當命令中也使用 Proxy 參數時,此參數才會有效。 您無法在相同的命令中使用 ProxyCredentialProxyUseDefaultCredentials 參數。

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

-ProxyUseDefaultCredentials

表示 Cmdlet 會使用目前使用者的認證來存取 Proxy 參數所指定的 Proxy 伺服器。

只有當命令中也使用 Proxy 參數時,此參數才會有效。 您無法在相同的命令中使用 ProxyCredentialProxyUseDefaultCredentials 參數。

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

-Resume

執行最佳嘗試以繼續下載部分檔案。 繼續 需要 OutFile

繼續 只會在本機檔案和遠端檔案的大小上運作,而且不會執行其他本機檔案和遠端檔案相同的驗證。

如果本機檔案大小小於遠端檔案大小,則 Cmdlet 會嘗試繼續下載檔案,並將剩餘的位元組附加至檔案結尾。

如果本機檔案大小與遠端檔案大小相同,則不會採取任何動作,而且 Cmdlet 會假設下載已完成。

如果本機檔案大小大於遠端檔案大小,則會覆寫本機檔案,並重新下載整個遠端檔案。 此行為與不使用 Resume 使用 OutFile 相同。

如果遠端伺服器不支援繼續下載,則會覆寫本機檔案,並重新下載整個遠端檔案。 此行為與不使用 Resume 使用 OutFile 相同。

如果本機檔案不存在,則會建立本機檔案,並下載整個遠端檔案。 此行為與不使用 Resume 使用 OutFile 相同。

此功能已在PowerShell 6.1.0中新增。

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

-RetryIntervalSec

指定收到 400 到 599 之間的失敗碼或 304 之間的連線重試間隔。 另請參閱 MaximumRetryCount 參數,以指定重試次數。

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

-SessionVariable

指定此 Cmdlet 建立 Web 要求會話的變數,並將它儲存在值中。 輸入不含貨幣符號的變數名稱, ($) 符號。

當您指定會話變數時,會建立 Web 要求會話物件, Invoke-WebRequest 並將它指派給 PowerShell 會話中具有指定名稱的變數。 一旦命令完成,便可在工作階段中使用變數。

Web 要求工作階段不同於遠端工作階段,並非持續連線。 它是物件,其中包含連線和要求的相關信息,包括 Cookie、認證、最大重新導向值,以及使用者代理程式字串。 您可以使用它在 Web 要求之間共用狀態與資料。

若要在後續 Web 要求中使用 Web 要求工作階段,請在 WebSession 參數值指定工作階段變數。 PowerShell 會在建立新的連接時,使用 Web 要求工作象中的數據。 若要覆寫 Web 要求工作階段中的值,請使用 Cmdlet 參數,例如 UserAgentCredential。 參數值的優先順序高於 Web 要求工作階段中的值。

您無法在相同的命令中使用 SessionVariableWebSession 參數。

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

-SkipCertificateCheck

略過憑證驗證檢查。 這包括所有驗證,例如到期、撤銷、受信任的根授權單位等。

警告

使用此參數並不安全,不建議使用。 此交換器僅適用於使用自我簽署憑證進行測試的已知主機。 自行風險使用。

此功能已在PowerShell 6.0.0中新增。

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

-SkipHeaderValidation

指出 Cmdlet 應該在要求中新增標頭,而不需驗證。

此參數應該用於需要不符合標準的標頭值的網站。 指定此參數會停用驗證,以允許未核取傳遞值。 指定時,會新增所有標頭而不進行驗證。

此參數會停用傳遞至 ContentType標頭UserAgent 參數的值驗證。

此功能已在PowerShell 6.0.0中新增。

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

-SkipHttpErrorCheck

此參數會導致 Cmdlet 忽略 HTTP 錯誤狀態,並繼續處理回應。 錯誤回應會寫入管線,就如同成功一樣。

此參數是在 PowerShell 7 中引進的。

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

-SslProtocol

設定 Web 要求允許的 SSL/TLS 通訊協定。 根據預設,系統支援 SSL/TLS 通訊協定。 SslProtocol 允許限制特定通訊協定以符合合規性。

這些值會定義為旗標型列舉。 您可以將多個值結合在一起,以使用此參數來設定多個旗標。 這些值可以傳遞至 SslProtocol 參數做為值的陣列,或是這些值的逗號分隔字串。 Cmdlet 會使用二進位 OR 作業來結合值。 將值當做數位傳遞是最簡單的選項,也可讓您在值上使用索引標籤完成。 您可能無法在所有平台上定義多個選項。

注意

在非 Windows 平臺上,可能無法提供 TlsTls12 作為選項。 Tls13在所有作業系統上都無法使用支援,而且必須根據每個操作系統進行驗證。

這項功能已在PowerShell 6.0.0中新增,且已在PowerShell 7.1中新增支援 Tls13

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

-TimeoutSec

指定要求逾時前可以擱置的時間長度。以秒為單位輸入值。 預設值為 0,會指定無限逾時。

功能變數名稱系統 (DNS) 查詢最多可能需要 15 秒的時間才能傳回或逾時。如果您的要求包含需要解析的主機名,並將 TimeoutSec 設定為大於零的值,但小於 15 秒,則擲回 WebException 之前可能需要 15 秒以上的時間,而且您的要求逾時。

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

-Token

要包含在要求中的 OAuth 或持有人令牌。 某些驗證選項需要令牌。 無法獨立使用。

Token 接受 SecureString 包含權杖的 。 若要手動提供令牌,請使用下列專案:

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

此參數是在 PowerShell 6.0 中引進。

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

-TransferEncoding

指定傳輸編碼 HTTP 回應標頭的值。 此參數可接受的值為:

  • 區塊化
  • 壓縮
  • 上下凹陷
  • GZip
  • 身分識別
Type:String
Accepted values:chunked, compress, deflate, gzip, identity
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Uri

指定傳送 Web 要求之因特網資源的統一資源識別碼 (URI) 。 輸入 URI。 此參數僅支援 HTTP 或 HTTPS。

此為必要參數。 參數名稱 Uri 是選擇性的。

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

-UseBasicParsing

此參數已被取代。 從 PowerShell 6.0.0 開始,所有 Web 要求只會使用基本剖析。 此參數僅包含回溯相容性,且任何使用參數不會影響 Cmdlet 的作業。

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

-UseDefaultCredentials

表示 Cmdlet 會使用目前用戶的認證來傳送 Web 要求。 這無法與 驗證認證 搭配使用,而且可能無法在所有平臺上受到支援。

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

-UserAgent

指定 Web 要求的使用者代理字串。

默認使用者代理程序類似於 Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 每個作業系統和平臺的稍微變化。

若要使用大部分因特網瀏覽器所使用的標準使用者代理程式字串測試網站,請使用 PSUserAgent 類別的屬性,例如 Chrome、FireFox、InternetExplorer、Opera 和 Safari。

例如,下列命令會使用 Internet Explorer 的使用者代理程式字串: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)

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

-WebSession

指定 Web 要求工作階段。 輸入變數名稱,包括貨幣符號 ($) 。

若要覆寫 Web 要求工作階段中的值,請使用 Cmdlet 參數,例如 UserAgentCredential。 參數值的優先順序高於 Web 要求工作階段中的值。 當為 Body 提供 MultipartFormDataContent 物件時,也會覆寫內容相關標頭,例如 Content-Type

不同於遠端會話,Web 要求會話不是持續性連線。 它是物件,其中包含連線和要求的相關信息,包括 Cookie、認證、最大重新導向值,以及使用者代理程式字串。 您可以使用它在 Web 要求之間共用狀態與資料。

若要建立 Web 要求會話,請在命令的 SessionVariable 參數 Invoke-WebRequest 值中輸入變數名稱,而不輸入貨幣符號。 Invoke-WebRequest 會建立會話,並將它儲存在變數中。 在後續命令中,使用變數作為 WebSession 參數的值。

您無法在同一個命令中使用 SessionVariableWebSession 參數。

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

輸入

Object

您可以使用管線將 Web 要求的主體傳送至 Invoke-WebRequest

輸出

BasicHtmlWebResponseObject

備註

從 PowerShell 6.0.0 Invoke-WebRequest 開始,僅支援基本剖析。

如需詳細資訊,請參閱 BasicHtmlWebResponseObject

由於 .NET Core 3.1 中的變更,PowerShell 7.0 和更新版本會使用 HttpClient.DefaultProxy 屬性來判斷 Proxy 組態。

此屬性的值取決於您的平臺:

  • 針對 Windows:從環境變數讀取 Proxy 組態。 如果未定義這些變數,屬性會衍生自使用者的 Proxy 設定。
  • 針對macOS:從環境變數讀取 Proxy 組態。 如果未定義這些變數,屬性會衍生自系統的 Proxy 設定。
  • 針對 Linux:從環境變數讀取 Proxy 組態。 如果未定義這些變數,屬性會初始化略過所有位址的非設定實例。

Windows 和 Unix 平台上用於 DefaultProxy 初始化的環境變數如下:

  • HTTP_PROXY:用於 HTTP 要求之 Proxy 伺服器的主機名或 IP 位址。
  • HTTPS_PROXY:用於 HTTPS 要求之 Proxy 伺服器的主機名或 IP 位址。
  • ALL_PROXY:在 HTTP 和 HTTPS 要求上使用之 Proxy 伺服器的主機名或 IP 位址,以防 HTTP_PROXYHTTPS_PROXY 未定義。
  • NO_PROXY:應從 Proxy 處理中排除的主機名稱清單 (以逗號分隔)。