PowerShell与PowerShell ISE之间的不同行为

时间:2017-10-22 21:18:15

标签: json powershell rabbitmq powershell-ise

我有一个这样的脚本:

Write-Host "Create RabbitMQ infrastructure..."

$rabbitHost = "http://my.company.com:15672"
$serverPort = 12345
$prefix = "unit"

$user = "test"
$pass = "test"

$secpasswd = ConvertTo-SecureString $pass -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($user, $secpasswd)

$exchanges = ("MyExchange")

$exchanges | foreach {
    Write-Host "Create $_"

    $body = @{
        type    = "direct"
        durable = "true"
    }

    $json = $body | ConvertTo-Json

    try{
        $url = "$rabbitHost/api/exchanges/%2f/$prefix" + "_" + "$serverPort" + "_" + $_
        Invoke-RestMethod $url -Body $json -Method Put -Credential $cred -ContentType 'application/json'
    } catch {$_.Exception}
}

一切都很好,当我从PowerShell ISE启动它时,但是当我从PowerShell运行它时出现错误:

  

远程服务器返回错误:(405)Method Not Allowed。

我知道,它可以以某种方式与RabbitMq连接,但我不知道如何,因为它只是一个简单的请求。

你能帮助我找到这些差异的根本原因吗?

1 个答案:

答案 0 :(得分:0)

我无法在本地重现这一点,但在进一步挖掘后,我发现this post引用了another post,其中包含有关%2f网址编码字符(/)问题的更多信息。< / p>

我引用的第一篇文章可能是您遇到的问题,在发出请求之前解码%2f,从而改变了URL的解释方式。请注意,%2f引用默认虚拟主机(请参阅RabbitMQ api文档)。