rest - PowerShell Invoke-RestMethod PUT 导致控制台中出现换行符

标签 rest powershell

我正在使用 PowerShell 模块与制造商的 REST API 进行交互。该模块由制造商编写并使用内置函数 Invoke-RestMethod。

我注意到,在打开很少输出的情况下运行我的程序时,控制台中出现了大量行。我以前从未见过,所以我决定深入研究。我将问题追溯到一行代码:

Invoke-RestMethod -Headers $session.DirectoryAuthHeader -Uri $uri -Method $Method -Body $Body

我进一步对其进行了检测,但将所有发送到函数的变量输出到控制台。此问题似乎仅在 Invoke-RestMethod 使用 PUT 方法时发生。 GET 和 POST 不会产生任何新行。我查看了 Fiddler 中的事务,唯一让我感到震惊的是 PUT 方法返回了一个空白主体。

有任何想法吗?我希望这只是调用 Invoke-RestMethod 方式的问题,而不是方法本身的问题。谢谢。

最佳答案

我最终自己解决了这个问题。我仍然不是 100% 为什么 PowerShell 以这种方式运行,但基本上空白返回值(因为响应中没有正文)正在回显到命令行。我通过检查主体是否为空来解决了这个问题,如果不返回 null 而不是一个空的 PSObject 我相信这是正在发生的事情。

$RESTResponse = Invoke-RestMethod -Headers $session.DirectoryAuthHeader -Uri $uri -Method $Method -Body $Body

if ($RESTResponse -ne "") {
    return $RESTResponse
} else {
    return
}

当我在 PowerShell 中进行了更多学习时,我发现了这是怎么回事,并想与遇到此问题的其他人分享。

在 PowerShell 中有一个称为管道的概念。基本上发生的情况是,如果使用管道字符“|”连续调用 cmdlet,则前一个函数的输出将成为下一个函数的输入,依此类推。如果管道上有未处理的输出(例如,将其放入变量中),它最终将回显到主机。

关于rest - PowerShell Invoke-RestMethod PUT 导致控制台中出现换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181656/

相关文章:

node.js - JSON 有效时 JSON 输入意外结束

powershell - 如何使用 powershell 卸载 dell support assist?

c# - 从 .NET 调用 Powershell 时设置启动目录?

powershell - 如何真正了解robocopy返回码2

python - Swagger 不使用 Django BaseSerializer 对象

RESTful API : "download resource" end point name

mysql - 使用 XPage Rest 服务连接到 mysql 时出错

rest - CoTURN:如何使用 TURN REST API?

powershell - 如何将多个值从 powershell 脚本返回到调用它的批处理文件?

windows - 如何在 CMD.EXE 语句中使用 Powershell 全局变量