首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GET方法中Citrix NetScaler误差的Powershell和NITRO

GET方法中Citrix NetScaler误差的Powershell和NITRO
EN

Stack Overflow用户
提问于 2015-05-13 08:37:01
回答 1查看 1.7K关注 0票数 0

我正在使用Citrix提供的PowerShell模块来调用Nitro。调用我可以成功地从加载中添加和删除负载平衡服务的函数。然而,当我尝试执行GET方法来获取服务的状态时,我得到了错误:

Invoke-RestMethod :基础连接已关闭:发送时发生了意外错误。

我尝试过在不使用模块的情况下运行调用-RestMethod,但是得到了相同的错误。

代码语言:javascript
复制
Invoke-RestMethod -WebSession $myNSSession.WebSession -Method GET -Uri https://<NetScaler IP/nitro/v1/config/service/<Service Name>

在googling这个错误时,一切似乎都指向了证书问题。我一开始甚至在POST方法上也有这种情况,直到我将下面的内容添加到我的脚本中

代码语言:javascript
复制
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

所以,既然这是做文章的工作,我不明白为什么它不会得到!!

另一件奇怪的事情是,如果我将URL直接放到浏览器中,然后输入我的凭证,我就会得到一个原始文本的响应!所以看起来这是我在PowerShell中调用它的方式的一个问题,而不是NetScaler或NITRO!

有人帮我,因为这让我快疯了!!

EN

回答 1

Stack Overflow用户

发布于 2018-09-19 08:48:31

我对Nitro API (特别是v10.5)也有同样的问题,并且发现设置证书策略、TLS版本和信任设置没有任何影响。发帖成功了,失败了。

对我来说,解决方案是不使用cmdlet,而是返回到本机.Net方法。下面我仍然使用带有内部证书的HTTPS,因此仍然设置回调。

代码语言:javascript
复制
$NSProtocol = "https://"
$NSHostname = "netscaler"

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$WebRequest = [System.Net.WebRequest]::Create("$NsProtocol$NsHostname/nitro/v1/config/hanode")
$WebRequest.Method = "GET"
$WebRequest.ContentType = "application/json; charset=utf-8";
$WebRequest.Headers.Add("AUTHORIZATION","Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($nsuser+":"+$nspass)))")
$Response = $WebRequest.GetResponse()
$ReadStream = New-Object System.IO.StreamReader $Response.GetResponseStream()
$HaState = ConvertFrom-Json $ReadStream.ReadToEnd()

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30209695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档