Invoke-WebRequest是PowerShell中类似curl的模块

Invoke-WebRequest

模块:

Microsoft.PowerShell。实用程序

从互联网上的网页获取内容。

 

 

 

 

 

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>]

描述

该Invoke-WebRequestcmdlet将HTTP和HTTPS请求发送到网页或Web服务。它解析响应并返回链接,图像和其他重要HTML元素的集合。

 

此cmdlet在PowerShell 3.0中引入。

 

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

 

例子

示例1:发送网络请求

本示例使用Invoke-WebRequestcmdlet将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变量中。

 

第二条命令获取任何InputField在名称属性是一样"* Value"。筛选后的结果通过管道传递Select-Object到“名称”和“值”属性。

 

示例2:使用有状态的Web服务

本示例说明如何将Invoke-WebRequestcmdlet与有状态Web服务一起使用。

 

 

 

 

$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-WebRequestcmdlet来获取网页内容。然后,它使用链接的财产BasicHtmlWebResponseObject是 Invoke-WebRequest回报,而HREF各个环节的性能。

 

 

 

 

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

示例4:使用在请求的页面中定义的编码将响应内容写入文件。

本示例使用Invoke-WebRequestcmdlet检索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-WebRequestcmdlet上传文件作为multipart/form-data 提交。该文件c:\document.txt被提交的表单域document用 Content-Type的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'

示例6:简化的多部分/表单数据提交

一些API需要multipart/form-data提交才能上传文件和混合内容。本示例演示了更新用户配置文件。

 

 

 

 

$Uri = 'https://api.contoso.com/v2/profile'

$Form = @{

    firstName  = 'John'

    lastName   = 'Doe'

    email      = '[email protected]'

    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,lastName,email,avatar,birthday,和 hobbies。API希望在avatar 现场提供用于用户个人资料图片的图像。该API还接受hobbies以相同形式提交的多个条目。

 

创建$FormHashTable时,键名称用作表单字段名称。默认情况下,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" -ErrorAction Stop

    # This will only execute if the Invoke-WebRequest is successful.

    $StatusCode = $Response.StatusCode

}

catch

{

    $StatusCode = $_.Exception.Response.StatusCode.value__

}

$StatusCode

 

404

该命令Invoke-WebRequest以Stop的ErrorAction进行调用,这会强制 在任何失败的请求上引发终止错误。终止错误由从Exception对象检索StatusCode的块捕获。Invoke-WebRequestcatch

 

参量

-允许未加密身份验证

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

 

 警告

 

不建议使用此参数,因此不建议这样做。提供它仅是为了与不能提供加密连接的旧系统兼容。使用风险自负。

 

此功能已在PowerShell 6.0.0中添加。

 

表格1

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-认证

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

 

可用的身份验证选项:

 

无:不提供身份验证时,这是默认选项;没有使用显式身份验证。

基本:需要凭据。凭证在RFC 7617基本身份验证标头中以格式发送base64(user:password)。

不记名:需要令牌。发送Authorization: Bearer带有提供的令牌的RFC 6750标头。这是OAuth的别名

OAuth:需要令牌。发送Authorization: Bearer带有提供的令牌的RFC 6750标头。这是Bearer的别名

提供身份验证会覆盖Authorization提供给Header或WebSession中包含的所有头。

 

此功能已在PowerShell 6.0.0中添加。

 

表2

类型:     WebAuthenticationType

接受的值:     无,基本,不记名,OAuth

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-身体

指定请求的主体。正文是标题之后的请求的内容。您也可以将主体值传递给Invoke-WebRequest。

 

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

 

当输入是GET请求且主体是IDictionary(通常是哈希表)时,主体将作为查询参数添加到URI。对于其他请求类型(例如POST),主体以标准name=value格式设置为请求主体的值。

 

在车身参数还可以接受System.Net.Http.MultipartFormDataContent的对象。这方便了multipart/form-data请求。当为Body提供MultipartFormDataContent对象时,提供给ContentType,Headers或 WebSession参数的任何与Content相关的标头都将被MultipartFormDataContent 对象的Content标头覆盖。在PowerShell 6.0.0中添加了此功能。

 

表3

类型:     目的

位置:     命名

默认值:         没有

接受管道输入:     真正

接受通配符:         假

-证书

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

 

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

 

表4

类型:     X509证书

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-证书缩略图

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

 

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

 

要获取证书指纹,请在PowerShell驱动器中使用Get-Item或Get-ChildItem命令 Cert:。

 

 注意

 

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

 

表5

类型:     串

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-内容类型

指定Web请求的内容类型。

 

如果省略此参数并且请求方法为POST,Invoke-WebRequest则将内容类型设置为application/x-www-form-urlencoded。否则,不会在呼叫中指定内容类型。

 

为Body提供MultipartFormDataContent对象时,ContentType被覆盖。

 

表6

类型:     串

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-凭据

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

 

键入用户名,例如User01或Domain01 \ User01,或输入由cmdlet生成的PSCredential对象Get-Credential。

 

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

 

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

 

 注意

 

有关SecureString数据保护的更多信息,请参见 SecureString的安全性如何?。

 

表7

类型:     PSC凭证

位置:     命名

默认值:         当前用户

接受管道输入:     假

接受通配符:         假

-自定义方法

指定用于Web请求的自定义方法。如果端点所需的“请求方法”不是“方法”上的可用选项,则可以使用此方法。Method和CustomMethod不能一起使用。

 

本示例TEST向API发出HTTP请求:

 

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

 

此功能已在PowerShell 6.0.0中添加。

 

表8

类型:     串

别名:     厘米

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-DisableKeepAlive

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

 

表9

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-形成

将字典转换为multipart/form-data提交。形式不能与Body一起使用。如果使用ContentType,它将被忽略。

 

字典的键用作表单字段名称。默认情况下,表单值将转换为字符串值。

 

如果该值为System.IO.FileInfo对象,则将提交二进制文件内容。文件名作为文件名属性提交。MIME类型设置为 application/octet-stream。Get-Item可用于简化提供System.IO.FileInfo 对象。

 

$ Form = @ {简历=获取项目'c:\ Users \ jdoe \ Documents \ John Doe.pdf'}

 

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

 

$ Form = @ {标签='假期','意大利','2017'图片= Get-ChildItem'c:\ Users \ jdoe \ Pictures \ 2017-意大利'}

 

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

 

此功能已在PowerShell 6.1.0中添加。

 

表10

类型:     词典

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-标题

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

 

要设置UserAgent标头,请使用UserAgent参数。您不能使用此参数来指定 User-Agent或Cookie标头。

 

与内容相关的标头,例如 为Body提供MultipartFormDataContent对象Content-Type时,这些标头将被覆盖。

 

表11

类型:     词典

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-文件内

从文件获取Web请求的内容。输入路径和文件名。如果省略路径,则默认为当前位置。

 

表12

类型:     串

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-MaximumRedirection

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

 

表13

类型:     32位

位置:     命名

默认值:         5

接受管道输入:     假

接受通配符:         假

-MaximumRetryCount

指定当收到400到599(含)或304之间的失败代码时,PowerShell重试连接的次数。另请参阅RetryIntervalSec参数以指定重试次数。

 

表14

类型:     32位

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-方法

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

 

默认

删除

得到

合并

选件

补丁

发布

跟踪

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

 

表15

类型:     WebRequestMethod

接受的值:     默认,获取,标题,发布,放置,删除,跟踪,选项,合并,补丁

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-无代理

指示该cmdlet不应使用代理来到达目标。当您需要绕过环境中配置的代理时,请使用此开关。此功能已在PowerShell 6.0.0中添加。

 

表16

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-OutFile

指定此cmdlet为其保存响应正文的输出文件。输入路径和文件名。如果省略路径,则默认为当前位置。

 

默认情况下,Invoke-WebRequest将结果返回到管道。要将结果发送到文件和管道,请使用Passthru参数。

 

表17

类型:     串

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

直通

指示cmdlet除了将结果写入文件之外,还返回结果。仅当命令中还使用OutFile参数时,此参数才有效。

 

表18

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-PreserveAuthorizationOnRedirect

指示cmdletAuthorization在存在重定向时应保留标头(如果存在)。

 

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

 

此功能已在PowerShell 6.0.0中添加。

 

表19

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-代理

指定请求的代理服务器,而不是直接连接到Internet资源。输入网络代理服务器的URI。

 

表20

类型:     乌里

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-ProxyCredential

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

 

键入一个用户名,例如User01或Domain01 \ User01,**[email protected]**,或输入一个PSCredential对象,例如由Get-Credentialcmdlet生成的 对象。

 

仅当命令中也使用了Proxy参数时,此参数才有效。您不能在同一命令中使用ProxyCredential和ProxyUseDefaultCredentials参数。

 

类型:     PSC凭证

位置:     命名

默认值:         当前用户

接受管道输入:     假

接受通配符:         假

-ProxyUseDefaultCredentials

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

 

仅当命令中也使用了Proxy参数时,此参数才有效。您不能在同一命令中使用ProxyCredential和ProxyUseDefaultCredentials参数。

 

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-恢复

尽最大努力尝试继续下载部分文件。继续需要 OutFile。

 

恢复仅对本地文件和远程文件的大小进行操作,而不会执行其他验证,即本地文件和远程文件是否相同。

 

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

 

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

 

如果本地文件大小大于远程文件大小,则将覆盖本地文件,然后重新下载整个远程文件。此行为与使用不带 Resume的OutFile相同。

 

如果远程服务器不支持继续下载,则将覆盖本地文件,然后重新下载整个远程文件。此行为与使用不带 Resume的OutFile相同。

 

如果本地文件不存在,那么将创建本地文件并下载整个远程文件。此行为与使用不带Resume的OutFile相同。

 

此功能已在PowerShell 6.1.0中添加。

 

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-RetryIntervalSec

指定当接收到400到599(含)或304之间的失败代码时,重试连接之间的间隔。另请参见MaximumRetryCount参数以指定重试次数。

 

类型:     32位

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-SessionVariable

指定此cmdlet为其创建Web请求会话并将其保存在值中的变量。输入不带美元符号($)的变量名。

 

指定会话变量时,将Invoke-WebRequest创建一个Web请求会话对象,并将其分配给PowerShell会话中具有指定名称的变量。命令完成后,您可以在会话中使用该变量。

 

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

 

要在后续的Web请求中使用Web请求会话,请在WebSession参数的值中指定会话变量。建立新连接时,PowerShell使用Web请求会话对象中的数据。若要覆盖Web请求会话中的值,请使用cmdlet参数,例如UserAgent或Credential。参数值优先于Web请求会话中的值。

 

您不能在同一命令中使用SessionVariable和WebSession参数。

 

类型:     串

别名:     SV

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-SkipCertificateCheck

跳过证书验证检查。这包括所有验证,例如到期,吊销,受信任的根权限等。

 

 警告

 

不建议使用此参数,因此不建议这样做。此开关仅可用于使用自签名证书进行测试的已知主机。使用风险自负。

 

此功能已在PowerShell 6.0.0中添加。

 

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-SkipHeaderValidation

指示该cmdlet应该在没有验证的情况下将标头添加到请求中。

 

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

 

此开关禁用对传递给ContentType,Headers和 UserAgent参数的值的验证。

 

此功能已在PowerShell 6.0.0中添加。

 

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-SkipHttpErrorCheck

此参数使cmdlet忽略HTTP错误状态并继续处理响应。错误响应就像成功一样被写入管道。

 

此参数在PowerShell 7中引入。

 

类型:     开关参数

位置:     命名

默认值:         假

接受管道输入:     假

接受通配符:         假

-Ssl协议

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

 

SslProtocol使用WebSslProtocol标志枚举。可以使用标志符号提供多个协议,也可以将多个WebSslProtocol选项与bor组合使用,但是并非所有平台都支持提供多种协议。

 

 注意

 

在非Windows平台上,可能无法'Tls, Tls12'作为选项提供。

 

此功能已在PowerShell 6.0.0中添加。

 

类型:     WebSsl协议

接受的值:     默认值,Tls,Tls11,Tls12

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-TimeoutSec

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

 

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

 

类型:     32位

位置:     命名

默认值:         0

接受管道输入:     假

接受通配符:         假

-令牌

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

 

令牌中SecureString包含一个令牌。要手动提供令牌,请使用以下命令:

 

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

 

此参数在PowerShell 6.0中引入。

 

类型:     安全字符串

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-TransferEncoding

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

 

块状

压缩

放气

邮编

身分识别

类型:     串

接受的值:     分块,压缩,放气,gzip,身份

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-乌里

指定将Web请求发送到的Internet资源的统一资源标识符(URI)。输入一个URI。此参数仅支持HTTP或HTTPS。

 

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

 

类型:     乌里

位置:     0

默认值:         没有

接受管道输入:     假

接受通配符:         假

-使用基本解析

此参数已被弃用。从PowerShell 6.0.0开始,所有Web请求都仅使用基本解析。包含此参数仅是为了向后兼容,任何使用该参数均不会影响cmdlet的操作。

 

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-UseDefaultCredentials

指示该cmdlet使用当前用户的凭据来发送Web请求。不能与身份验证或凭据一起使用,可能并非在所有平台上都支持。

 

类型:     开关参数

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-用户代理

指定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。

 

例如,以下命令将用户代理字符串用于Internet Explorer:

 

Invoke-WebRequest -Uri https://website.com/ -UserAgent([Microsoft.PowerShell.Commands.PSUserAgent] :: InternetExplorer)

 

类型:     串

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

-WebSession

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

 

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

 

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

 

要创建Web请求会话,请在命令的SessionVariable参数的值中输入不带美元符号的变量名 Invoke-WebRequest。Invoke-WebRequest创建会话并将其保存在变量中。在后续命令中,将变量用作WebSession参数的值 。

 

您不能在同一命令中使用SessionVariable和WebSession参数。

 

类型:     WebRequestSession

位置:     命名

默认值:         没有

接受管道输入:     假

接受通配符:         假

输入项

目的

 

您可以将Web请求的主体通过管道发送到Invoke-WebRequest。

 

产出

BasicHtmlWebResponseObject

 

笔记

从PowerShell 6.0.0开始,Invoke-WebRequest仅支持基本解析。

 

有关更多信息,请参见 BasicHtmlWebResponseObject。

 

由于.NET Core 3.1中的更改,PowerShell 7.0和更高版本使用 HttpClient.DefaultProxy 属性确定代理配置。

 

此属性的值由您的平台确定:

 

对于Windows:从环境变量读取代理配置。如果未定义这些变量,则属性是从用户的代理设置派生的。

对于macOS:从环境变量读取代理配置。如果未定义这些变量,则属性是从系统的代理设置派生的。

对于Linux:从环境变量读取代理配置。如果未定义这些变量,则该属性将初始化一个绕过所有地址的未配置实例。

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

 

HTTP_PROXY:用于HTTP请求的代理服务器的主机名或IP地址。

HTTPS_PROXY:用于HTTPS请求的代理服务器的主机名或IP地址。

ALL_PROXY:主机名或HTTP上使用的代理服务器的IP地址和在HTTPS请求的情况下HTTP_PROXY或HTTPS_PROXY没有定义。

NO_PROXY:以逗号分隔的主机名列表,应排除在代理之外。

相关链接

调用静态方法

ConvertFrom-Json

转换成杰森

猜你喜欢

转载自blog.csdn.net/allway2/article/details/109245731