Invoke-RestMethod

将 HTTP 或 HTTPS 请求发送到 RESTful Web 服务。

语法

StandardMethod (默认值)

Invoke-RestMethod
    [-Uri] <Uri>
    [-Method <WebRequestMethod>]
    [-FollowRelLink]
    [-MaximumFollowRelLink <Int32>]
    [-ResponseHeadersVariable <String>]
    [-StatusCodeVariable <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]
    [-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>]

StandardMethodNoProxy

Invoke-RestMethod
    [-Uri] <Uri>
    -NoProxy
    [-Method <WebRequestMethod>]
    [-FollowRelLink]
    [-MaximumFollowRelLink <Int32>]
    [-ResponseHeadersVariable <String>]
    [-StatusCodeVariable <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]
    [-TimeoutSec <Int32>]
    [-Headers <IDictionary>]
    [-MaximumRedirection <Int32>]
    [-MaximumRetryCount <Int32>]
    [-RetryIntervalSec <Int32>]
    [-Body <Object>]
    [-Form <IDictionary>]
    [-ContentType <String>]
    [-TransferEncoding <String>]
    [-InFile <String>]
    [-OutFile <String>]
    [-PassThru]
    [-Resume]
    [-SkipHttpErrorCheck]
    [-PreserveAuthorizationOnRedirect]
    [-SkipHeaderValidation]
    [<CommonParameters>]

CustomMethod

Invoke-RestMethod
    [-Uri] <Uri>
    -CustomMethod <String>
    [-FollowRelLink]
    [-MaximumFollowRelLink <Int32>]
    [-ResponseHeadersVariable <String>]
    [-StatusCodeVariable <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]
    [-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>]

CustomMethodNoProxy

Invoke-RestMethod
    [-Uri] <Uri>
    -CustomMethod <String>
    -NoProxy
    [-FollowRelLink]
    [-MaximumFollowRelLink <Int32>]
    [-ResponseHeadersVariable <String>]
    [-StatusCodeVariable <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]
    [-TimeoutSec <Int32>]
    [-Headers <IDictionary>]
    [-MaximumRedirection <Int32>]
    [-MaximumRetryCount <Int32>]
    [-RetryIntervalSec <Int32>]
    [-Body <Object>]
    [-Form <IDictionary>]
    [-ContentType <String>]
    [-TransferEncoding <String>]
    [-InFile <String>]
    [-OutFile <String>]
    [-PassThru]
    [-Resume]
    [-SkipHttpErrorCheck]
    [-PreserveAuthorizationOnRedirect]
    [-SkipHeaderValidation]
    [<CommonParameters>]

说明

Invoke-RestMethod cmdlet 向返回丰富结构化数据的代表性状态传输 (REST) Web 服务发送 HTTP 和 HTTPS 请求。

PowerShell 基于数据类型设置响应的格式。 对于 RSS 或 ATOM 源,PowerShell 返回项或条目 XML 节点。 对于 JavaScript 对象表示法(JSON)或 XML,PowerShell 会将内容转换为 [PSCustomObject] 对象或反序列化。

注释

当 REST 终结点返回多个对象时,对象将作为数组接收。 如果通过管道将输出从 Invoke-RestMethod 传递给另一个命令,则会将其作为单个 [Object[]] 对象发送。 该数组的内容不会为管道上的下一个命令枚举。

此 cmdlet 在 Windows PowerShell 3.0 中引入。

从 PowerShell 7.0 开始,Invoke-RestMethod 支持由环境变量定义的代理配置。 请参阅本文的注释部分。

示例

示例 1:获取 PowerShell RSS 源

此示例使用 Invoke-RestMethod cmdlet 从 PowerShell 博客 RSS 源获取信息。 该命令使用 Format-Table cmdlet 在表格中显示每个博客的 标题pubDate 属性的值。

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 在用户的 Intranet 网站上执行 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 指定为输出模式,并指定两天前开始且一天前结束的返回数据的时间段。 正文变量指定应用于 Invoke-RestMethod 通信的特定 REST API 的参数的值。

Invoke-RestMethod 命令将随所有变量一起运行,为生成的 CSV 输出文件指定路径和文件名。

示例 3:跟踪关系链接

根据 RFC5988,一些 REST API 支持通过关系链接进行分页。 可以让 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

个人资料表单需要以下字段:firstNamelastNameemailavatarbirthdayhobbies。 API 需要 avatar 域中提供用户个人资料图像。 API 还将接受以同一表单提交的多个 hobbies 条目。

创建 $Form HashTable 时,键名称将用作窗体字段名称。 默认情况下,HashTable 的值将转换为字符串。 如果存在值 System.IO.FileInfo ,则将提交文件内容。 如果存在数组或列表等集合,则表单字段将多次提交。

通过在键avatar上使用Get-Item,对象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 验证具有标准定义值格式的已知标头的值。 以下示例演示如何此验证引发错误,以及如何使用 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 将返回错误报告,格式化值无效。 请求不会发送到终结点。

使用 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

允许通过未加密的连接发送凭据和机密。 默认情况下,提供 Credential 或任何 Authentication 选项,其 Uri 开头不是 将 https:// 导致错误,并且请求将中止,以防止无意中通过未加密的连接以纯文本形式传输机密。 若要自行重写此行为,请提供 AllowUnencryptedAuthentication 参数。

警告

使用此参数不安全,不建议使用。 它仅用于与无法提供加密连接的旧系统兼容。 使用风险自负。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Authentication

指定要用于请求的显式身份验证类型。 默认值为 None身份验证 参数不能与 UseDefaultCredentials 参数一起使用。

可用的身份验证选项:

  • None:这是未提供 身份验证 时的默认选项。 不会使用显式身份验证。
  • Basic:需要指定 Credential。 凭据将用于发送格式为 Authorization: Basic的 RFC 7617 基本身份验证base64(user:password)标头。
  • Bearer:需要指定 Token 参数。 使用提供的令牌发送 RFC 6750 Authorization: Bearer 标头。
  • OAuth:需要指定 Token 参数。 使用提供的令牌发送 RFC 6750 Authorization: Bearer 标头。

提供 Authentication 会重写提供给 Authorization 或包含在 WebSession 中的任何 标头。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:WebAuthenticationType
默认值:None
接受的值:None, Basic, Bearer, OAuth
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Body

指定请求的正文。 正文是请求的内容,位于标头之后。 还可以通过管道将正文值传递给 Invoke-RestMethod

Body 参数可用于指定查询参数列表或指定响应的内容。

当输入为 POST 请求,且正文为 字符串时,将第一个等号(=)左侧的值设置为表单数据中的键,剩余的文本则设置为值。 若要指定多个键,请对 Body 使用 IDictionary 对象,例如哈希表。

当输入是 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 中添加。

参数属性

类型:Object
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:True
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Certificate

指定用于安全 Web 请求的客户端证书。 输入包含证书的变量或获取证书的命令或表达式。

若要查找证书,请使用 Get-PfxCertificate 或使用 Certificate (Get-ChildItem) 驱动器中的 Cert: cmdlet。 如果证书无效或没有足够的颁发机构,命令将失败。

参数属性

类型:X509Certificate
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CertificateThumbprint

指定有权发送请求的用户帐户的数字公钥证书(X509)。 输入证书的证书指纹。

证书用于基于客户端证书的身份验证。 证书只能映射到本地用户帐户,而不能映射到域帐户。

若要查看证书指纹,请使用 Get-ItemGet-ChildItem 命令在 Cert:\CurrentUser\My中找到证书。

注释

此功能目前仅在 Windows OS 平台上受支持。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ContentType

指定 Web 请求的内容类型。

如果 ContentType 的值包含编码格式(如 charset),则 cmdlet 使用该格式对 Web 请求的正文进行编码。 如果 ContentType 未指定编码格式,则改用默认编码格式。 一种具有编码格式的 ContentType 的示例是 text/plain; charset=iso-8859-5,它指定了 拉丁文/西里尔文 字母表。

如果省略此参数,并且请求方法是 POST,Invoke-RestMethod 将内容类型设置为 application/x-www-form-urlencoded。 否则,在调用中未指定内容类型。

当为 Body 提供对象时MultipartFormDataContentContentType 将被覆盖。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Credential

指定有权发送请求的用户帐户。 默认值为当前用户。

键入用户名(如 User01Domain01\User01),或输入由 cmdlet 生成的 Get-Credential 对象。

Credential 可以单独使用,也可以与某些 Authentication 参数选项结合使用。 单独使用时,只有在远程服务器发送身份验证质询请求时,它才会向远程服务器提供凭据。 与 身份验证 选项一起使用时,将显式发送凭据。

凭据存储在 PSCredential 对象中,密码存储为 SecureString

注释

有关 SecureString 数据保护的详细信息,请参阅 SecureString 的安全性如何?

参数属性

类型:PSCredential
默认值:Current user
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-CustomMethod

指定用于 Web 请求的自定义方法。 这可以与端点所需的请求方法一起使用,该方法不是该 方法上的可用选项。 MethodCustomMethod 不能一起使用。

示例:

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

这会向 API 发出 TEST HTTP 请求。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:厘米

参数集

CustomMethodNoProxy
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CustomMethod
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DisableKeepAlive

指示 cmdlet 将 HTTP 标头中的 KeepAlive 值设置为 False。 默认情况下,KeepAlive 为 True。 KeepAlive 建立与服务器的持久连接,以促进后续请求。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

指示 cmdlet 应跟踪关系链接。

根据 RFC5988,一些 REST API 支持通过关系链接进行分页。 可以让 cmdlet 执行此操作,而不是分析标头以获取下一页的 URL。 若要设置要跟踪关系链接的次数,请使用 MaximumFollowRelLink 参数。

使用此开关时,cmdlet 将返回结果页的集合。 每个结果页可能包含多个结果项。

此功能已在 PowerShell 6.0.0 中添加。

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:佛罗里达州
(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Form

将字典转换为 multipart/form-data 提交。 Form 不能与 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'
}

如果值是集合类型,例如数组或列表,则将多次提交 for 字段。 默认情况下,列表的值将被视为字符串。 如果值是 System.IO.FileInfo 对象,则将提交二进制文件内容。 不支持嵌套集合。

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

在上面的示例中,该tags字段将在以下形式中提供三次,Vacation分别用于 、 和 Italy2017pictures该字段也将为文件夹中的2017-Italy每个文件提交一次。 该文件夹中文件的二进制内容将作为值提交。

此功能已在 PowerShell 6.1.0 中添加。

参数属性

类型:IDictionary
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Headers

指定 Web 请求的标头。 输入哈希表或字典。

Content-Type 提供 MultipartFormDataContent 对象时,将重写与内容相关的标头,例如

参数属性

类型:IDictionary
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-HttpVersion

指定用于请求的 HTTP 版本。 默认值为 1.1

有效值为:

  • 1.0
  • 1.1
  • 2.0
  • 3.0

参数属性

类型:Version
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-InFile

从文件获取 Web 请求的内容。

输入路径和文件名。 如果省略路径,则默认值为当前位置。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

指定在使用 FollowRelLink 时要跟踪关系链接的次数。 如果 REST API 由于请求过多而受到限制,可能需要较小的值。 默认值是 [Int32]::MaxValue。 值为 0 (零)会阻止跟踪关系链接。

类型:Int32
默认值:Int32.MaxValue
支持通配符:False
不显示:False
别名:ML
(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-MaximumRedirection

指定在连接失败之前,PowerShell 将连接重定向到备用统一资源标识符(URI)的次数。 默认值为 5。 值为 0(零)会阻止所有重定向。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-MaximumRetryCount

指定收到 400 到 599 之间的故障代码(含或 304)时,PowerShell 重试连接次数。 此外,请参阅 RetryIntervalSec 参数,以指定重试之间的秒数。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Method

指定用于 Web 请求的方法。 此参数的可接受值为:

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

CustomMethod 参数可用于上面未列出的请求方法。

参数属性

类型:WebRequestMethod
默认值:None
接受的值:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
支持通配符:False
不显示:False

参数集

StandardMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
StandardMethodNoProxy
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NoProxy

指示 cmdlet 不会使用代理访问目标。

当需要绕过 Internet Explorer 中配置的代理或环境中指定的代理时,请使用此开关。

此参数是在 PowerShell 6.0 中引入的。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

StandardMethodNoProxy
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CustomMethodNoProxy
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-OutFile

将响应正文保存在指定的输出文件中。 输入路径和文件名。 如果省略路径,则默认值为当前位置。 该名称被视为文本路径。 包含方括号([])的名称必须用单引号(')括起来。

默认情况下,Invoke-RestMethod 将结果返回到管道。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PassThru

仅当命令中也使用 OutFile 参数时,此参数才有效。 目的是将结果写入文件并写入管道。

注释

使用 PassThru 参数时,输出将写入管道,但不会创建文件。 有关详细信息,请参阅 PowerShell 问题 #15409

参数属性

类型:SwitchParameter
默认值:No output
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PreserveAuthorizationOnRedirect

指示 cmdlet 应在重定向之间保留 Authorization 标头(如果存在)。

默认情况下,cmdlet 在重定向之前会删除 Authorization 标头。 如果需要将标头发送到重定向位置,则指定此参数将禁用此逻辑。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Proxy

对请求使用代理服务器,而不是直接连接到 Internet 资源。 输入网络代理服务器的统一资源标识符(URI)。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:Uri
默认值:None
支持通配符:False
不显示:False

参数集

StandardMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CustomMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ProxyCredential

指定有权使用 Proxy 参数指定的代理服务器的用户帐户。 默认值为当前用户。

键入用户名(如 User01Domain01\User01User@Domain.Com或输入对象 PSCredential (如 cmdlet 生成 Get-Credential 的对象)。

仅当命令中也使用 Proxy 参数时,此参数才有效。 不能在同一命令中使用 ProxyCredentialProxyUseDefaultCredentials 参数。

参数属性

类型:PSCredential
默认值:None
支持通配符:False
不显示:False

参数集

StandardMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CustomMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ProxyUseDefaultCredentials

指示 cmdlet 使用当前用户的凭据访问由 Proxy 参数指定的代理服务器。

仅当命令中也使用 Proxy 参数时,此参数才有效。 不能在同一命令中使用 ProxyCredentialProxyUseDefaultCredentials 参数。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

StandardMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
CustomMethod
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-ResponseHeadersVariable

创建包含响应标头字典的变量。 输入没有美元符号($)符号的变量名称。 字典的键包含 Web 服务器返回的响应标头的字段名称和值。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:RHV

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Resume

尽最大努力尝试继续下载未完成的文件。 Resume 参数需要 OutFile 参数。

Resume 仅对本地文件和远程文件的大小进行操作,而不执行本地文件与远程文件相同的其他验证。

如果本地文件大小小于远程文件大小,则 cmdlet 将尝试恢复下载文件,并将剩余字节追加到文件末尾。

如果本地文件大小与远程文件大小相同,则不执行任何操作,并且 cmdlet 假定下载已完成。

如果本地文件大于远程文件大小,则本地文件将被覆盖,整个远程文件将被完全重新下载。 此行为与在没有 Resume 的情况下使用 OutFile 相同。

如果远程服务器不支持下载恢复,则本地文件将被覆盖,整个远程文件将被完全重新下载。 此行为与在没有 Resume 的情况下使用 OutFile 相同。

如果本地文件不存在,则将创建本地文件并完全下载整个远程文件。 此行为与在没有 Resume 的情况下使用 OutFile 相同。

此功能已在 PowerShell 6.1.0 中添加。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-RetryIntervalSec

指定在收到 400 到 599 之间的故障代码(包括 304)时连接重试之间的间隔。 该值必须介于 1[int]::MaxValue之间。

另请参阅 MaximumRetryCount 参数,以指定重试次数。

参数属性

类型:Int32
默认值:5
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值: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 参数。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:SV

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SkipCertificateCheck

跳过证书验证检查,包括所有验证,例如过期、吊销、受信任的根机构等。

警告

使用此参数不安全,不建议使用。 此开关仅用于使用自签名证书对已知主机进行测试。 使用风险自负。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SkipHeaderValidation

指示 cmdlet 应在未验证的情况下向请求添加标头。

此开关应用于需要不符合标准的标头值的站点。 指定此开关将禁用验证,以允许值在未经检查的情况下传递。 指定后,将添加所有标头而不进行验证。

这将禁用对传递给 ContentTypeHeadersUserAgent 参数的值的验证。

此功能已在 PowerShell 6.0.0 中添加。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SkipHttpErrorCheck

此参数会导致 cmdlet 忽略 HTTP 错误状态并继续处理响应。 错误响应被写入管道,就好像它们成功了一样。

此参数是在 PowerShell 7 中引入的。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SslProtocol

设置 Web 请求允许的 SSL/TLS 协议。 默认情况下,系统支持 SSL/TLS 协议。 SslProtocol 允许出于合规目的限制为特定协议。

这些值被定义为以标志为基础的枚举。 可以使用此参数将多个值组合在一起以设置多个标志。 可以将值作为值数组或这些值的逗号分隔字符串传递给 SslProtocol 参数。 该 cmdlet 将使用二进制 OR作合并这些值。 将值作为数组传递是最简单的选项,还允许对值使用 Tab 补全。 可能无法在所有平台上提供多个值。

注释

在非 Windows 平台上,可能无法提供 TlsTls12 作为选项。 并非 Tls13 在所有作系统上都支持,需要根据每个作系统进行验证。

此功能已添加到 PowerShell 6.0.0 中,并在 PowerShell 7.1 中添加了对 Tls13 的支持。

参数属性

类型:WebSslProtocol
默认值:None
接受的值:Default, Tls, Tls11, Tls12, Tls13
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-StatusCodeVariable

创建包含请求的 HTTP 状态代码结果的变量。 输入没有美元符号($)符号的变量名称。

当与 SkipHttpErrorCheck 参数一起使用时,该参数可以标识成功消息或失败消息。

以字符串的形式输入参数的变量名称,如 -StatusCodeVariable "scv"

此参数是在 PowerShell 7 中引入的。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-TimeoutSec

指定请求在超时之前可以等待多长时间。以秒为单位输入值。 默认值为0,指定无限期超时。

域名系统 (DNS) 查询最多可能需要 15 秒才能返回或超时。如果您的请求包含需要解析的主机名,并且您将 TimeoutSec 设置为大于零但小于 15 秒的值,则可能需要 15 秒或更长时间才能引发 WebException,并且您的请求超时。

参数属性

类型:Int32
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Token

要包含在请求中的 OAuth 或持有者令牌。 某些 身份验证 选项需要 令牌。 它不能单独使用。

Token 采用包含令牌的 SecureString。 若要提供令牌,请手动使用以下项:

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

此参数是在 PowerShell 6.0 中引入的。

参数属性

类型:SecureString
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-TransferEncoding

指定传输编码 HTTP 响应标头的值。 此参数的可接受值为:

  • Chunked
  • 压缩
  • Deflate
  • GZip
  • 身份

参数属性

类型:String
默认值:None
接受的值:chunked, compress, deflate, gzip, identity
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Uri

指定将 Web 请求发送到的 Internet 资源的统一资源标识符(URI)。 此参数支持 HTTP、HTTPS、FTP 和 FILE 值。

此参数是必需的。 参数名称(Uri)是可选的。

参数属性

类型:Uri
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-UseBasicParsing

此参数已弃用。 从 PowerShell 6.0.0 开始,所有 Web 请求仅使用基本分析。 包含此参数仅用于向后兼容性,对它的任何使用都不会影响 cmdlet 的作。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-UseDefaultCredentials

指示 cmdlet 使用当前用户的凭据发送 Web 请求。 这不能用于 身份验证凭据,并且可能无法在所有平台上使用。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-UserAgent

指定 Web 请求的用户代理字符串。

默认用户代理类似于 Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0,每个操作系统和平台都有细微的变化。

若要使用大多数 Internet 浏览器使用的标准用户代理字符串测试网站,请使用 PSUserAgent 类的属性,例如 Chrome、FireFox、InternetExplorer、Opera 和 Safari。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WebSession

指定 Web 请求会话。 输入变量名称,包括美元符号($)。

若要替代 Web 请求会话中的值,请使用 cmdlet 参数,例如 UserAgentCredential。 参数值优先于 Web 请求会话中的值。 当为 Content-Type 提供 MultipartFormDataContent 对象时,与内容相关的标头(例如 )也将被覆盖。

与远程会话不同,Web 请求会话不是永久性连接。 它是一个对象,其中包含有关连接和请求的信息,包括 Cookie、凭据、最大重定向值和用户代理字符串。 可以使用它在 Web 请求之间共享状态和数据。

若要创建 Web 请求会话,请在 命令的 Invoke-RestMethod 参数的值中输入变量名称(不含美元符号)。 Invoke-RestMethod 创建会话并将其保存在变量中。 在后续命令中,使用变量作为 WebSession 参数的值。

不能在同一命令中使用 SessionVariableWebSession 参数。

参数属性

类型:WebRequestSession
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

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 属性来确定代理配置。

此属性的值是不同的规则,具体取决于您的平台:

  • 对于 Windows:从环境变量中读取代理配置,或者如果未定义这些变量,则从用户的代理设置中读取代理配置。
  • 对于 macOS:从环境变量中读取代理配置,或者如果未定义这些变量,则从系统的代理设置中读取代理配置。
  • 对于 Linux:从环境变量中读取代理配置,或者,如果未定义这些变量,则此属性初始化绕过所有地址的未配置实例。

用于在基于 Windows 和 Unix 的平台上 DefaultProxy 初始化的环境变量包括:

  • HTTP_PROXY:HTTP 请求上使用的代理服务器的主机名或 IP 地址。
  • HTTPS_PROXY:HTTPS 请求上使用的代理服务器的主机名或 IP 地址。
  • ALL_PROXY:在 HTTP 和 HTTPS 请求 HTTP_PROXY 上使用的代理服务器的主机名或 IP 地址,以防是否 HTTPS_PROXY 定义或未定义。
  • NO_PROXY:应从代理中排除的主机名的逗号分隔列表。