没有使用 OutFile 的 Invoke-WebRequest?

9
我在Powershell中使用Invoke-WebRequest下载文件,没有使用-OutFile参数。从此处的文档中可以看到,该文件应该已经被下载到我所在的目录中。但是,目录中什么也没有。响应是OK的,也没有显示任何错误。
那个文件可能发生了什么?我对Invoke-WebRequest在没有Out参数的情况下如何工作是否有误解?
谢谢!
注意:我知道可以使用参数轻松下载该文件,但它很大,我想确保它不会在我不需要的地方占用磁盘空间。

3
如果您没有指定一个路径(PATH),响应将保存在当前位置。如果您完全省略了“-OutFile”参数,它将不会被保存在文件中。 - techguy1029
2个回答

11
链接的文档中可以得知:
默认情况下,Invoke-WebRequest 会将结果返回到管道。
也就是说,在没有使用-OutFile的情况下,不会创建任何文件。(如果您没有捕获或重定向输出,它将打印到主机(控制台)。)
正如techguy1029在评论中指出的那样,只有当您使用-OutFile但只指定文件名称而不是路径时,当前目录才会发挥作用。
另外:管道输出是一个(从)WebResponseObject 类型派生的响应对象,而只有响应的正文的值(相当于属性值.Content)保存在-OutFile中。

5
让我们来谈谈微软文档中Invoke-WebRequest的内容。
引用块中写道:
“-OutFile:指定此 cmdlet 保存响应正文的输出文件。输入路径和文件名。如果省略路径,则默认为当前位置。”
关键词在于,如果省略了路径,它将使用当前路径。 -OutFileString类型的参数。
将其保存到当前路径的用法如下:
Invoke-webrequest "http://Test.com/test.pdf" -OutFile "Test.pdf"

否则要有一个自定义路径
Invoke-webrequest "http://Test.com/test.pdf" -OutFile "C:\Test\Test.Pdf"

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