Rundeck / WINRM-Rundeck管理连接,移动文件,执行内联Powershell脚本失败

问题描述

当前,我面临一个非常混乱的问题。

  1. 我正在使用Winrm作为执行程序和文件复印机来执行从(Rundeck)到(远程Windows机器)的作业,它们执行嵌入式Powershell脚本。

  2. 在3种环境之一中尝试并正常工作。

  3. 在Preprod和Prod Rundeck上。相同的作业(导出/导入)失败,尽管在3个环境上具有相同的设置,相同的脚本,相同的args甚至相同的Windows版本。

  4. 添加了WINRM Check连接步骤,并且成功。

WINRM Check step

  1. Rundeck设法将脚本扔到计算机上(但是名称错误),这意味着身份验证进行得很好。但是,它因此抽象错误而失败。

[ERROR]执行完成,并出现以下错误(winrm-exec.py:304)[root] [ERROR]参数不正确。 (扩展的故障数据:{u'fault_subcode':'w:InvalidParameter',u'fault_code':'s:Sender',u'wsmanfault_code':'87','transport_message':u'服务器返回了错误的HTTP响应。代码500',“ http_status_code”:500})(winrm-exec.py:305)[root] [WinRMPython]:结果代码:1,成功:false 失败:NonZeroResultCode:[WinRMPython]结果代码:1

Failure

  1. 当我尝试从计算机本地执行抛出的Powershell脚本时,效果很好。

WinRM插件版本:2.0.9

Python:2.7.17

解决方法

对于将来的参考,解决方案是here。在默认节点执行器和默认文件复制器(项目设置>编辑配置>默认节点执行器和默认文件复印器选项卡)上切换到Python 3解释器(而不是Python 2)可以解决此问题。

,

在WINRM中切换到python3解决了该问题。但是,这会导致Windows Server 2008和更早版本出现问题。

因此,如果您同时具有Windows OS版本(2008之前和之后),则需要拆分RUNDECK项目,并在python2和python3上都具有winrm。