Rest 转换为Json时不存在文件内容

Rest 转换为Json时不存在文件内容,rest,powershell,octopus-deploy,Rest,Powershell,Octopus Deploy,我正在努力从一个网站上获取内容,将内容放入一个文件中,修改后通过八达通发送到其他地方。现在我被困在“把它放进一个文件”。在本地,它非常有效。这就是我所拥有的: $GetBuildresponse = Invoke-RestMethod -Method Get -header $headers -ContentType "application/json" -Uri $Uri $y = convertTo-json $GetBuildresponse -depth 99 | Out-file -F

我正在努力从一个网站上获取内容,将内容放入一个文件中,修改后通过八达通发送到其他地方。现在我被困在“把它放进一个文件”。在本地,它非常有效。这就是我所拥有的:

$GetBuildresponse = Invoke-RestMethod -Method Get -header $headers -ContentType "application/json" -Uri $Uri
$y = convertTo-json $GetBuildresponse -depth 99 | Out-file -FilePath "C:\test\File.json"
这在我的计算机上运行,但在八达通中失败,错误如下:

转换后的JSON字符串格式不正确

当我检查这个文件应该在的位置时,它是空的。有人能告诉我原因是什么吗

编辑:

我的GET命令($GetBuildResponse)在本地返回这个值

*A bunch of text*
"variables": {
    "system.debug": {
        "value": "false",
        "allowOverride": true
    },
     "BuildVersion": {
        "value": "ValueIWantToChange"
    }
},
*A bunch of text*

在octopus中,我尝试从GET语句中获取输出,结果一切正常。问题似乎在于“converttojson”命令。当我转换时,我得到了“坏格式”错误。我认为错误出在Powershell(4.0)版本上,尽管我可能无法更新Powershell,因为这需要我们重新启动机器。

可能是无法访问URL的问题

我刚刚尝试了一个部署,在Octopus服务器上运行脚本步骤

$GetBuildresponse = Invoke-RestMethod -Method Get -header $headers -ContentType "application/json" -Uri http://localhost:8065/api
$y = convertTo-json $GetBuildresponse -depth 99 | Out-file -FilePath "./File.json"
New-OctopusArtifact -Path "./File.json" -Name "File.json"
它运行良好,并将根API json作为File.json返回。所以你的脚本看起来不错


(我为八达通工作。如果您无法让它工作,请随时联系我们寻求支持)

我猜您的数据被截断了,因为它在某个时候仍在忙着流媒体。请通过类似的在线服务查看JSON文件的错误。您可以发布一些$GetBuildResponse的示例吗?它确实能很好地从你机器上的文件中读取,对吗?所以,也许是关于编写文件时的编码?也许可以尝试使用文件编码吗?是的,json在本地工作得非常好。我可以使用get命令,将响应放入文件中,更改,然后使用put命令发回响应。不管什么原因,我不能用Octopus做这件事。你能将GetBuildresponse的内容输出到一个文件中,以确保你的restmethod调用没有问题吗..你发布的$GetBuildresponse的值,是在Octopus部署期间失败时的值吗?我的最佳猜测是,您的请求中会出现HTML错误页或代理/防火墙错误页。