jenkins - 从 jenkins groovy 调用 windows sc 命令时提示访问被拒绝

标签 jenkins groovy

我正在尝试使用 jenkins 创建 CI/CD 管道,我的环境 devops/deployment 是 windows server 2016。
用 apache groovy 编写的管道脚本。其中调用批处理文件来部署代码,该批处理脚本正在执行 2 个任务。

  • 在另一台主机上部署代码(使用 robocopy 命令)
  • 启动 w3svc 服务(使用 sc 命令)。

  • 这两个命令都在批处理文件中提到,批处理文件是通过简单的'bat batchfilelocation/name.bat'通过groovy脚本调用的。这是批处理脚本:
    @echo [off]
    net use "\\<servername>\<shareddirectory>" <password> /user:<domain\user> /persistent:no
    robocopy "C:\jenkins\AngularPipeline\dist\<project>" \\$<Dir>eddistinationServer>\<shar /E /PURGE
    sc \\$servername start w3svc
    echo on
    echo close batch script!
    

    对于 sc 命令执行,它给出以下错误:

    C:\jenkins\AngularPipeline>sc \ start w3svc [SC] StartService: OpenService FAILED 5: Access is denied.



    这个脚本运行良好,而我直接通过命令提示符(非管理员)调用它。访问被拒绝仅在此脚本在 jenkins groovy 下运行时出现。

    我检查了以下可能性:
  • 源和目标计算机上的 WMI 权限
  • //确认正确配置了WinRM。 c:>Winrm 快速配置
  • //确保远程服务器允许来自任何机器的命令。 PS c:>Set-item wsman:localhost\client\trustedhosts -value *
  • 重新启动 Windows 远程管理服务在两台机器上重新启动
  • C:\Windows\system32>sc\sdshow w3svc

  • D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO ;;;WD)

    请建议如何解决相同的问题。

    最佳答案

    推荐途径:

    如果您没有在另一个代理上运行此 Jenkins 作业,那么您可以重新配置您的 Jenkins 服务以使用本地管理员帐户。为此,请按照以下步骤操作

  • 打开开始菜单
  • 搜索“服务”
  • 查找“Jenkins”服务
  • 右击Jenkins服务
  • 打开属性
  • 单击“登录”选项卡
  • 选择“此帐户”
  • 浏览本地系统管理员帐户并选择它
  • 添加密码并确认相同 ID 的密码
  • 点击确定
  • 重启/启动Jenkins服务

  • 第二种方法:
  • 在安装 Jenkins 的服务器/工作站上创建一个 bat 文件
  • 创建文件的快捷方式
  • 右键单击快捷方式并转到“属性”
  • 点击“比较”
  • 选中“以管理员身份运行”旁边的复选框
  • 单击确定,然后
  • 单击立即应用,转到控制面板 -> 系统和安全 ->
    操作中心 -> 更改用户帐户控制设置
  • 将级别设置为“从不通知”使用 Jenkins 作业运行该 bat 快捷方式

  • 在这种情况下,作业将被标记为失败,但脚本将被执行。

    关于jenkins - 从 jenkins groovy 调用 windows sc 命令时提示访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56885907/

    相关文章:

    ruby - 是否可以将 ruby​​ 脚本作为预构建步骤执行?

    svn - Jenkins:SVN 工作副本版本无效

    authentication - CloudFoundry CLI登录无法正常工作(凭据被拒绝,请重试)

    grails - 从类名称创建grails域类

    java - 为什么java.lang.VerifyError是什么意思?

    ubuntu - 在 Ubuntu Lucid 上手动安装 groovy 的最佳实践是什么?

    windows - Jenkins 远程错误: Error cloning remote repo 'origin'

    python - 触发 Jenkins 的命令不起作用

    java - Gradle 任务未按要求运行(编译前)

    grails - 使用特定的 id/email 保存到 grails