首页 > 解决方案 > Rundeck/WINRM - Rundeck 设法连接、移动文件、执行内联 powershell 脚本失败

问题描述

目前我面临一个非常令人困惑的问题。

  1. 我正在使用 winrm 作为执行器和文件复制器执行从(Rundeck)到(远程 Windows 机器)的作业,它执行内联 powershell 脚本。

  2. 在 3 个环境之一中尝试并运行良好。

  3. 在 Preprod 和 Prod Rundeck 上。相同的作业(导出/导入)失败,但在 3 个环境、相同的脚本、相同的参数、甚至相同的 Windows 版本上设置相同。

  4. 我添加了一个 WINRM 检查连接步骤,它成功了。

WINRM 检查步骤

  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 响应错误。 Code 500', 'http_status_code': 500}) (winrm-exec.py:305)[root] [WinRMPython]: 结果代码: 1, 成功: false 失败: NonZeroResultCode: [WinRMPython] 结果代码: 1

失败

  1. 当我尝试从机器本地执行抛出的 Powershell 脚本时,它运行良好。

WinRM 插件版本:2.0.9

蟒蛇:2.7.17

标签: pythonpowershellrundeckwinrm

解决方案


在 WINRM 中切换到 python3 解决了这个问题。但是,它导致了 Windows server 2008 和更早版本的问题。

因此,如果您同时拥有 Windows 操作系统版本 [2008 年前和 2008 年后],则需要拆分 RUNDECK 项目,并在 python2 和 python3 上都使用 winrm。


推荐阅读