我正在使用 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/