Invoke-RestMethod

傳送 HTTP 或 HTTPS 要求至 RESTful Web 服務。

Syntax

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

Description

Cmdlet 會將 Invoke-RestMethod HTTP 和 HTTPS 要求傳送至表示狀態傳輸 (REST) Web 服務,以傳回豐富的結構化資料。

PowerShell 會根據資料類型來格式化回應。 針對 RSS 或 ATOM 摘要,PowerShell 會傳回 Item 或 Entry XML 節點。 針對 JavaScript 物件標記法 (JSON) 或 XML、PowerShell 會將內容 [PSCustomObject] 轉換成物件或還原序列化。

注意

當 REST 端點傳回多個物件時,物件會以陣列的形式接收。 如果您以管線將輸出從 Invoke-RestMethod 傳送至另一個命令,則會以單 [Object[]] 一物件的形式傳送。 管線上下一個命令不會列舉該陣列的內容。

此 Cmdlet 是在 Windows PowerShell 3.0 引進。

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

範例

範例 1:取得 PowerShell RSS 摘要

此範例會 Invoke-RestMethod 使用 Cmdlet 從 PowerShell 部落格 RSS 摘要取得資訊。 此命令會 Format-Table 使用 Cmdlet 來顯示資料表中每個部落格的 TitlepubDate 屬性值。

Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/ |
  Format-Table -Property Title, pubDate

Title                                                                pubDate
-----                                                                -------
Join the PowerShell 10th Anniversary Celebration!                    Tue, 08 Nov 2016 23:00:04 +0000
DSC Resource Kit November 2016 Release                               Thu, 03 Nov 2016 00:19:07 +0000
PSScriptAnalyzer Community Call - Oct 18, 2016                       Thu, 13 Oct 2016 17:52:35 +0000
New Home for In-Box DSC Resources                                    Sat, 08 Oct 2016 07:13:10 +0000
New Social Features on Gallery                                       Fri, 30 Sep 2016 23:04:34 +0000
PowerShellGet and PackageManagement in PowerShell Gallery and GitHub Thu, 29 Sep 2016 22:21:42 +0000
PowerShell Security at DerbyCon                                      Wed, 28 Sep 2016 01:13:19 +0000
DSC Resource Kit September Release                                   Thu, 22 Sep 2016 00:25:37 +0000
PowerShell DSC and implicit remoting broken in KB3176934             Tue, 23 Aug 2016 15:07:50 +0000
PowerShell on Linux and Open Source!                                 Thu, 18 Aug 2016 15:32:02 +0000

範例 2:執行 POST 要求

在此範例中,使用者會執行 Invoke-RestMethod ,在使用者組織中的內部網路網站上執行 POST 要求。

$Cred = Get-Credential
$Url = "https://server.contoso.com:8089/services/search/jobs/export"
$Body = @{
    search = "search index=_internal | reverse | table index,host,source,sourcetype,_raw"
    output_mode = "csv"
    earliest_time = "-2d@d"
    latest_time = "-1d@d"
}
Invoke-RestMethod -Method 'Post' -Uri $url -Credential $Cred -Body $body -OutFile output.csv

系統會提示輸入 認證,然後儲存在 中 $Cred ,且將存取的 URL 定義于 中 $Url

變數 $Body 會描述搜尋準則、指定 CSV 做為輸出模式,並指定傳回資料的時間週期,該時間週期會在兩天前開始且一天前結束。 本文變數會指定套用至與通訊之特定 REST API Invoke-RestMethod 的參數值。

命令 Invoke-RestMethod 會就地執行,並指定結果 CSV 輸出檔案的路徑和檔案名。

範例 3:追蹤關聯連結

某些 REST API 支援透過每個 RFC5988的關聯連結進行分頁。 您可以讓 Cmdlet 為您執行此動作,而不是剖析標頭以取得下一頁的 URL。 此範例會從 PowerShell GitHub 存放庫傳回前兩個頁面的問題。

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

範例 4:簡化的多部分/表單資料提交

某些 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-RestMethod -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 欄位將會出現在每個清單專案的提交中一次。

範例 5:傳遞多個標頭

API 通常需要通過的標頭進行驗證或驗證。 此範例示範如何將多個標頭從 hash-table 傳遞至 REST API。

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

範例 6:列舉管線上傳回的專案

GitHub 會傳回陣列中的多個物件。 如果您使用管線將輸出傳送至另一個命令,則會以單 [Object[]] 一物件的形式傳送。

若要將物件列舉到管線中,請使用管線將結果傳送至 Write-Output 或以括弧括住 Cmdlet。 下列範例會計算 GitHub 所傳回的物件數目。 然後計算列舉至管線的物件數目。

$uri = 'https://api.github.com/repos/microsoftdocs/powershell-docs/issues'
$x = 0
Invoke-RestMethod -Uri $uri | ForEach-Object { $x++ }
$x
1

$x = 0
(Invoke-RestMethod -Uri $uri) | ForEach-Object { $x++ }
$x
30

$x = 0
Invoke-RestMethod -Uri $uri | Write-Output | ForEach-Object { $x++ }
$x
30

範例 7:略過標頭驗證

根據預設, Invoke-RestMethod Cmdlet 會驗證具有 standardards 定義值格式之已知標頭的值。 下列範例示範此驗證如何引發錯誤,以及如何使用 SkipHeaderValidation 參數來避免驗證容許無效格式值的端點值。

$Uri = 'https://httpbin.org/headers'
$InvalidHeaders = @{
    'If-Match' = '12345'
}

Invoke-RestMethod -Uri $Uri -Headers $InvalidHeaders

Invoke-RestMethod -Uri $Uri -Headers $InvalidHeaders -SkipHeaderValidation |
    Format-List

Invoke-RestMethod: The format of value '12345' is invalid.

headers : @{Host=httpbin.org; If-Match=12345; User-Agent=Mozilla/5.0 (Windows NT 10.0; Microsoft Windows
          10.0.19044; en-US) PowerShell/7.2.5;  X-Amzn-Trace-Id=Root=1-62f150a6-27754fd4226f31b43a3d2874}

HTTPbin.org 是一項服務,會傳回 Web 要求和回應的相關資訊以進行疑難排解。 變數 $Uri 會指派給 /headers 服務的端點,以傳回要求標頭做為其回應中的內容。

If-Match要求標頭定義于RFC-7232 第 3.1 節中,而且要求標頭的值必須使用周圍引號來定義。 變數 $InvalidHeaders 會指派雜湊表,其中 的值 If-Match 無效,因為它定義為 12345 ,而不是 "12345"

使用無效標頭呼叫 Invoke-RestMethod 會傳回錯誤報表格式化值無效。 要求不會傳送至端點。

使用SkipHeaderValidation參數呼叫 Invoke-RestMethod 會忽略驗證失敗,並將要求傳送至端點。 因為端點容許不符合規範的標頭值,所以 Cmdlet 會傳迴響應物件,而不會發生錯誤。

範例 8:使用 HTTP 2.0 傳送要求

此範例會使用 HTTP 2.0 通訊協定查詢 GitHub 問題。

$uri = 'https://api.github.com/repos/microsoftdocs/powershell-docs/issues'
Invoke-RestMethod -Uri $uri -HttpVersion 2.0 -SkipCertificateCheck

參數

-AllowUnencryptedAuthentication

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

警告

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

此功能已在 PowerShell 6.0.0 中新增。

Type:SwitchParameter
Position:Named
Default value: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
Accept pipeline input:False
Accept wildcard characters:False

-Body

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

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

當輸入為 POST 要求且本文為 String時,第一個等號左邊的值 (=) 會設定為表單資料的索引鍵,而其餘文字會設定為值。 若要指定多個索引鍵,請使用BodyIDictionary物件,例如雜湊表。

當輸入是 GET 要求,而本文通常是 IDictionary (,雜湊表) ,本文就會新增至 URI 作為查詢參數。 針對其他要求類型 (,例如 PATCH) ,本文會設定為標準 name=value 格式的要求本文值,並使用 URL 編碼的值。

當輸入為 System.Xml時。XmlNode 物件和 XML 宣告會指定編碼,除非 由 ContentType 參數覆寫,否則該編碼會用於要求中的資料。

當本文是表單,或它是另一個 Invoke-WebRequest 呼叫的輸出時,PowerShell 會將要求內容設定為表單欄位。

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

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

-Certificate

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

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

Type:X509Certificate
Position:Named
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False

-ContentType

指定 Web 要求的內容類型。

如果 ContentType 的值包含編碼格式 (為 charset) ,Cmdlet 會使用該格式來編碼 Web 要求的本文。 如果 ContentType 未指定編碼格式,則會改用預設編碼格式。 具有編碼格式的 ContentType 範例為 text/plain; charset=iso-8859-5 ,其會指定 拉丁文/斯拉夫文 字母。

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

當提供Body的物件時 MultipartFormDataContent ,將會覆寫ContentType

Type:String
Position:Named
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False

-CustomMethod

指定用於 Web 要求的自訂方法。 這可以與端點所需的要求方法搭配使用,不是 方法上的可用選項。 方法CustomMethod 不能一起使用。

範例:

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

這會對 API 提出 TEST HTTP 要求。

此功能已在 PowerShell 6.0.0 中新增。

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

-DisableKeepAlive

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

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

-FollowRelLink

指出 Cmdlet 應遵循關聯連結。

某些 REST API 支援透過每個 RFC5988的關聯連結進行分頁。 您可以讓 Cmdlet 為您執行此動作,而不是剖析標頭以取得下一頁的 URL。 若要設定要追蹤關聯連結的次數,請使用 MaximumFollowRelLink 參數。

使用此參數時,Cmdlet 會傳回結果頁面的集合。 結果的每個頁面可能包含多個結果專案。

此功能已在 PowerShell 6.0.0 中新增。

Type:SwitchParameter
Aliases:FL
Position:Named
Default value: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' }

如果值是集合類型,例如 Array 或 List,則會多次提交欄位的 。 清單的值預設會被視為字串。 如果值為 System.IO.FileInfo 物件,則會提交二進位檔案內容。 不支援巢狀集合。

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

在上述範例中 tags ,會在表單中提供欄位三次,每個 VacationItaly2017 都會提供一次。 欄位 pictures 也會針對資料夾中的每個檔案 2017-Italy 提交一次。 該資料夾中檔案的二進位內容將會提交為值。

此功能已在 PowerShell 6.1.0 中新增。

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

-Headers

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

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

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

-HttpVersion

指定用於要求的 HTTP 版本。 預設值為 1.1

有效值為:

  • 1.0
  • 1.1
  • 2.0
  • 3.0
Type:Version
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-InFile

從檔案取得 Web 要求的內容。

輸入路徑和檔案名稱。 若省略路徑,則預設為目前位置。

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

-MaximumFollowRelLink

指定如果使用 FollowRelLink ,則追蹤關聯連結的次數。 如果 REST API 因要求太多而節流,可能需要較小的值。 預設值是 [Int32]::MaxValue。 值 0 (零) 會防止下列關聯連結。

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

-MaximumRedirection

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

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

-MaximumRetryCount

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

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

-Method

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

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

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

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

-NoProxy

表示 Cmdlet 不會使用 Proxy 來觸達目的地。

當您需要略過 Internet Explorer 中設定的 Proxy,或環境中指定的 Proxy 時,請使用此參數。

此參數是在 PowerShell 6.0 中引進。

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

-OutFile

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

根據預設, Invoke-RestMethod 會將結果傳回至管線。

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

-PassThru

只有當命令中也使用 OutFile 參數時,此參數才會有效。 意圖是將結果寫入檔案和管線。

注意

當您使用 PassThru 參數時,輸出會寫入管線,但不會建立檔案。 如需詳細資訊,請參閱 PowerShell 問題 #15409

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

-PreserveAuthorizationOnRedirect

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

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

此功能已在 PowerShell 6.0.0 中新增。

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

-Proxy

使用 Proxy 伺服器進行要求,而不是直接連線到網際網路資源。 輸入網路 Proxy 伺服器的統一資源識別項 (URI) 。

此功能已在 PowerShell 6.0.0 中新增。

Type:Uri
Position:Named
Default value:None
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:None
Accept pipeline input:False
Accept wildcard characters:False

-ProxyUseDefaultCredentials

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

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

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

-ResponseHeadersVariable

建立包含回應標頭字典的變數。 輸入不含貨幣符號的變數名稱, ($) 符號。 字典的索引鍵包含網頁伺服器所傳回之回應標頭的功能變數名稱和值。

此功能已在 PowerShell 6.0.0 中新增。

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

-Resume

盡最大努力繼續下載部分檔案。 Resume參數需要OutFile參數。

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

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

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

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

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

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

此功能已在 PowerShell 6.1.0 中新增。

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

-RetryIntervalSec

指定收到 400 到 599 之間的失敗碼或 304 之間的連線重試間隔。 另請參閱 MaximumRetryCount 參數,以指定重試次數。 值必須介於 和 [int]::MaxValue 之間 1

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

-SessionVariable

建立包含 Web 要求會話的變數。 輸入不含貨幣符號的變數名稱, ($) 符號。

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

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

從 PowerShell 7.4 開始,只要後續要求中不會覆寫會話的屬性,Web 要求會話就會持續存在。 當它們是時,Cmdlet 會以新的值重新建立會話。 持續性會話可減少重複要求的額外負荷,使其更快。

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

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

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

-SkipCertificateCheck

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

警告

使用此參數並不安全,不建議使用。 此參數僅供使用自我簽署憑證進行測試之已知主機使用。 以您自己的風險使用。

此功能已在 PowerShell 6.0.0 中新增。

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

-SkipHeaderValidation

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

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

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

此功能已在 PowerShell 6.0.0 中新增。

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

-SkipHttpErrorCheck

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

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

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

-SslProtocol

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

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

注意

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

此功能已新增至 PowerShell 6.0.0 中,且 已于 PowerShell 7.1 中新增支援 Tls13

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

-StatusCodeVariable

建立變數,其中包含要求的 HTTP 狀態碼結果。 輸入不含貨幣符號的變數名稱, ($) 符號。

參數可以識別與 SkipHttpErrorCheck 參數搭配使用時的成功訊息或失敗訊息。

輸入參數的變數名稱做為字串,例如 -StatusCodeVariable "scv"

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

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

-TimeoutSec

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

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

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

-Token

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

權杖 會採用 SecureString 包含權杖的 。 若要提供權杖,請手動使用下列專案:

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

此參數是在 PowerShell 6.0 中引進。

Type:SecureString
Position:Named
Default value:None
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
Accept pipeline input:False
Accept wildcard characters:False

-Uri

指定傳送 Web 要求之網際網路資源的統一資源識別項 (URI) 。 此參數支援 HTTP、HTTPS、FTP 與 FILE 值。

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

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

-UseBasicParsing

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

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

-UseDefaultCredentials

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

Type:SwitchParameter
Position:Named
Default value: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。

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

-WebSession

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

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

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

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

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

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

輸入

Object

您可以使用管線將 Web 要求的本文傳送至此 Cmdlet。

輸出

Int64

當要求傳回整數時,這個 Cmdlet 會傳回該整數。

String

當要求傳回字串時,此 Cmdlet 會傳回該字串。

XmlDocument

當要求傳回有效的 XML 時,此 Cmdlet 會將它當做 XmlDocument 傳回。

PSObject

當要求傳回 JSON 字串時,此 Cmdlet 會傳回代表資料的 PSObject

備註

PowerShell 包含的下列別名 Invoke-RestMethod

  • 所有平台:
    • irm

某些功能可能無法在所有平臺上使用。

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

此屬性的值會根據您的平臺而有所不同:

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

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

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