在powershell中使用Invoke-WebRequest重定向URL时如何获取位置标头

Posted

技术标签:

【中文标题】在powershell中使用Invoke-WebRequest重定向URL时如何获取位置标头【英文标题】:How to get Location header when URL redirected using Invoke-WebRequest in powershell 【发布时间】:2020-03-26 03:23:18 【问题描述】: 调用永久移动或重定向的 URL,不会返回 Location http 标头或正确的位置。 似乎在 URL 调用期间正在执行 URL 重定向(http 状态代码:302、301 等)。

我该如何克服这个问题?

【问题讨论】:

【参考方案1】:

Alec Collier 找到 this answer

将以下内容添加到您的 URL 调用中:-MaximumRedirection 0 -ErrorAction Ignore

例子:

$url="https://jigsaw.w3.org/HTTP/300/301.html"

$resp = Invoke-WebRequest $url -MaximumRedirection 0 -ErrorAction Ignore

$resp.Headers.Location

【讨论】:

【参考方案2】:

只需使用-MaximumRedirection 0 -SkipHttpErrorCheck(如果您想取消警告,请添加-ErrorAction:SilentlyContinue):

(Invoke-WebRequest -Uri "https://www.google.com/ncr" -MaximumRedirection 0 -SkipHttpErrorCheck -ErrorAction:SilentlyContinue).Headers.Location

https://www.google.com/

注意返回值的数据类型是一个数组,它只有一个元素。

【讨论】:

以上是关于在powershell中使用Invoke-WebRequest重定向URL时如何获取位置标头的主要内容,如果未能解决你的问题,请参考以下文章

在 PowerShell 中使用特定配置文件启动 Chrome

Powershell中命令自动补全功能及使用Windows命令

powershell脚本隐藏退出码

在 windows 10 powershell 中使用 sqlplus 执行 sql 文件

如何在 powershell 中使用变量调用命令?

如何在 powershell 远程会话(powershell)中编辑文件