【问题标题】:PowerShell Invoke-RestMethod PUT causes newlines in the consolePowerShell Invoke-RestMethod PUT 导致控制台中出现换行符
【发布时间】:2016-08-27 13:27:04
【问题描述】:

我正在使用 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 方式的问题,而不是方法本身的问题。谢谢。

【问题讨论】:

    标签: rest powershell


    【解决方案1】:

    我最终自己解决了这个问题。我仍然不是 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,则前一个函数的输出将成为下一个函数的输入,依此类推。如果管道上有未处理的输出(例如,将其放入变量中),最终将回显到主机。

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      相关资源
      最近更新 更多