Out-File脚本错误

时间:2018-01-29 22:58:23

标签: rest powershell scripting

我有一个用于下载PDF文件的REST调用(POST)。 API调用以PDF文件的二进制版本响应。我想将文件保存在我的机器上作为.pdf。但是我收到了一个错误:

Out-File : Access to the path 'C:\Users\my-name\Documents\Tests' is denied.
At C:\Users\my-name\Documents\Tests\TEST-WITH-LOOP.ps1:132 char:149
+ ... questBody | Out-File -FilePath ("C:\Users\my-name\Documents\Tests
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (:) [Out-File], UnauthorizedAccessException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand

POSTMAN的响应正文标题:

Content-Disposition →attachment; filename="Report-01_29_14-28.pdf"
Content-Type →application/octet-stream
DataServiceVersion →2.0
Date →Mon, 29 Jan 2018 21:51:31 GMT
Date →Mon, 29 Jan 2018 21:51:31 GMT
Server →Jetty(9.3.7.v20160115NeotysEdition.30)
Transfer-Encoding →chunked

命令:

$DownloadReportResponse = Invoke-RestMethod -Method Post -Uri $DownloadReportUrl -ContentType "application/json" -Body $DownloadReportRequestBody |
    Out-File -FilePath ("C:\Users\my-name\Documents\Tests") -Force

问题: 如何将其作为.pdf保存到我的机器中,或者可能包含在电子邮件的附件中?

2 个答案:

答案 0 :(得分:2)

嗯,这个错误有点误导。您正在尝试将输出文件创建为C:\Users\my-name\Documents\Tests,但该文件已作为目录存在,因此存在访问冲突。使用完整路径创建文件:

Invoke-RestMethod ... |
    Out-File "C:\Users\my-name\Documents\Tests\Report-01_29_14-28.pdf"

答案 1 :(得分:0)

我在使用 Out-File 命令将输出重定向到文件时也有同样的问题。

我的命令是这样的:

Out-File -FilePath C:\MyFiles -InputObject "My text"

当我运行命令时出现此错误:

Out-File: Access to the path 'C:\MyFiles' is denied.

问题是我将输出(“My text”)重定向到目录而不是文件。

我必须通过指定文件 (program.txt) 以这种方式修改它:

Out-File -FilePath C:\MyFiles\program.txt -InputObject "My text"

这次效果很好。

仅此而已。

我希望这会有所帮助