使用Invoke-WebRequest显示所有内容

67

所以,我决定开始使用PowerShell而不是命令提示符。我想运行curl。结果发现,curl在PowerShell中是Invoke-WebRequest的别名,输出非常不同。

使用PowerShell curl的方式与真正的curl相同,但我只能看到部分内容。

我知道可以将PowerShell curl的输出放入变量中,然后使用$variable.Content来显示所有内容,但这似乎比真正的curl更麻烦。

是否有选项可以直接显示所有内容?我在帮助中找不到任何选项。

3个回答

107
curl命令行工具不同,Invoke-WebRequest返回一个带有各种属性的对象,其中请求文档的内容只是其中之一。 您可以通过展开属性来在单个语句中获取内容,如下所示:
Invoke-WebRequest 'http://www.example.org/' | Select-Object -Expand Content

或者通过点表示法获取属性值,如下所示:

(Invoke-WebRequest 'http://www.example.org/').Content

或者您可以使用curl的Windows版本:

& curl.exe 'http://www.example.org/'

使用程序的扩展名来区分它与别名curl(对应Invoke-WebRequest)的不同。

1
如果您想查看响应头,请执行以下命令:Invoke-WebRequest 'http://www.example.org/' | Select-Object -Expand RawContent - tolache

6

如果你觉得输入过多很麻烦,这是实现它的最短方式(至少我能想到的):

(iwr google.tt).content

3
像这样的内容吗?
$res=Invoke-WebRequest "https://www.google.fr/" 


#to view html of body
$res.ParsedHtml.body.innerHTML

#to view text of body
$res.ParsedHtml.body.innerText

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接