使用PowerShell 4.0和Invoke-RestMethod cmdlet.我遇到了-OutFile和-PassThru选项的问题.每当我添加-PassThru选项时,我的-OutFile都会被创建,但内容为空!
根据Invoke-RestMethod文档,当这些选项一起使用时,输出文件和管道对象都应该可用."-OutFile将响应主体保存在指定的输出文件中.[...]要将结果发送到文件和管道,请使用Passthru参数."
这是重复我遇到的问题的测试.在这里,我正在调用一个rest api,试图保存对文件的响应并反序列化为一个powershell对象.
"POWERSHELL VERSION $($host.Version.ToString())" $date = Invoke-RestMethod "http://date.jsontest.com" -OutFile "OutFile.txt" -PassThru Get-Content "OutFile.txt" # FILE IS EMPTY!!! PASSTHRU SEEMS TO RESULT IN EMPTY FILE $date # powershell object has the date received from api
以下是两个测试,用于验证Invoke-RestMethod的正常功能,而不使用PassThru选项
# ... Test # 1, call rest api and deserialize into powershell object $date = Invoke-RestMethod "http://date.jsontest.com" $date # Output shows the date retrieved from sample restful service # ... Test # 2, call rest api and save response body directly to a file Invoke-RestMethod "http://date.jsontest.com" -OutFile "OutFile.txt" Get-Content "OutFile.txt" # Output shows contents of rest api response body (json text)
我认为这些测试应该帮助其他人看到我遇到的麻烦.我的问题是,是否有一些我缺少的东西使这项工作,或者这可能是cmdlet的错误?我已经用Google搜索了一些解决方案,没有明显的报道此问题.我想使用-OutFile作为另一个与内容编码相关的Invoke-RestMethod问题的解决方法的一部分,如Bug所述?Invoke-RestMethod和UTF-8数据.-PassThru选项有助于我查看返回的数据并终止多请求(分页)odata结果集的迭代.