Jenkins: 执行 PowerShell 命令

简介:

Jenkins 默认是不支持执行 PowerShell 命令的,需要安装插件才能完成这样的任务。本文将介绍 Jenkins PoserShell 插件的基本用法和常见问题。

安装 PowerShell 插件

在 Jenkins->Plugin Manager 界面中选择 "Available" 标签页,输入 "powershell" 进行过滤:

选则 "PowerShell plugin",然后点击 "Install without restart" 按钮。安装完成后就可添加 PowerShell 类型的 build step 了:

在 build step 中执行 PowerShell 命令

我们通过 PowerShell 来执行一个简单的任务:检查 agent 的操作系统版本和 PowerShell 版本。
先创建一个 Freestyle 类型的 job,然后添加一个 "Windows PowerShell" 类型的 build step,并添加下面的 PowerShell 命令:

Write-Host
Write-Host "Windows version info:"
[System.Environment]::OSVersion.Version
Write-Host
Write-Host "PowerShell version info:"
$host

看起来像这个样子:

保存 job,然后运行它。执行成功后查看运行日志:

上图中的第一行说明了 Jenkins 是如何执行 PowerShell 命令的,其实就是把我们写的命令打包到一个 PowerShell 脚本文件中,然后在 agent 上调用 powershell.exe 执行这个脚本。第二个和第三个红框中则是输出的系统版本和 PowerShell 版本信息。

让 build step 失败

接下来我们发现,无论怎么执行 PowerShell 命令,build step 的结束状态都是 "成功"(包括一些命令执行失败的情况)!

这是不科学的,因为当命令执行失败或是满足一些条件时,我们希望 build step 的结束状态是 "失败"。后续的 build step 根据前面 step 的结束状态决定是否执行。
默认情况下之所以 build step 不会失败,是因为 PowerShell 执行的过程中没有执行 exit 调用!这就导致 Jenkins 无法判断执行的命令是否成功退出,默认就认为都是成功的啦。所以要完善这里的逻辑就要求我们一定要在脚本中实现自己的 exit 逻辑:判断脚本执行成功时调用 exit 0;判断脚本执行失败时调用 exit 1(当然你可以根据自己的需要返回其他整数)。
作为 demo,我们编辑上面的 job 并在最后一行添加 exit 1,保存后执行:

终于可以让 build step 失败了!

Run task as admin

在 Windows 类型的 agent 上执行的任务,有些需要 admin 权限。那么如何以 admin 权限执行 PowerShell 的命令呢?其实这是由 Jenkins agent 程序运行的权限决定的。
我们在 agent 上启动 Jenkins 程序的时候有大概三种选择,直接运行或者以 run as admin 的方式运行再或者以 Windows Service 方式运行的。如果以后两种方式运行 Jenkins agent 程序,那么所有的 task 也会以 admin 的权限运行。

在 pipeline 中执行 PowerShell 命令

毫无疑问,pipeline 将会被越来越多的使用。我们当然应当具备在 pipeline 中执行 PowerShell 命令的能力。还好,Jenkins 刚刚支持了这个功能。创建一个 pipeline 类型的 job,输入下面的代码:

node {
     powershell 'Write-Output "Hello, world!";'
 }

然后保存并运行。遗憾的是,这个功能还不完美:

在笔者的环境中,输出的日志总带有一点乱码,具体原因不明。猜测是 pipeline 功能对 PowerShell 插件的支持还有小问题。

总结

到目前为止,Jenkins 已经实现了对 PowerShell 的主流支持。期待 Jenkins 逐步的完善还存在的一些小问题,毕竟 MS 已经开始用 PowerShell 取代 bat 了。


本文转自sparkdev博客园博客,原文链接:http://www.cnblogs.com/sparkdev/p/7224171.html,如需转载请自行联系原作者

相关文章
|
3月前
|
人工智能 数据可视化 API
3分钟上手OpenClaw多Agent!阿里云/本地多Agent模式部署+MemOS持久记忆+免费大模型API配置+避坑指南
2026年,绝大多数OpenClaw(小龙虾AI)玩家还停留在单智能体、临时上下文、频繁失忆、单窗口拥堵的阶段,明明取名贾维斯,用起来却像个临时工。真正的突破,来自MemOS持久记忆系统与多Agent分工模式的结合——让一只小龙虾,变成一支分工明确、长期记忆、并行处理、永不混乱的AI团队。
1223 9
|
4月前
|
人工智能 自然语言处理 安全
2026年阿里云OpenClaw(Clawdbot)一键部署+企业微信快速接入喂饭级教程
OpenClaw(原Clawdbot/Moltbot)作为阿里云生态下的开源AI自动化代理工具,凭借自然语言交互、企业级任务自动化、多平台无缝集成的核心能力,已成为企业轻量化数字化转型的关键抓手。2026年阿里云推出OpenClaw专属一键部署方案,结合企业微信在办公场景的高渗透率,实现“办公软件内下达指令,AI自动执行任务”的高效协作模式。本文将完整拆解阿里云环境下OpenClaw的一键部署流程,重点详解企业微信机器人创建、加密配置、对接调试的全步骤,包含实操代码命令与企业级避坑技巧,技术零基础的企业用户也能快速完成从部署到落地的全流程。
1404 8
|
4月前
|
弹性计算 人工智能 安全
2026年OpenClaw(原Clawdbot)一键部署+企业微信接入保姆级教程
2026年OpenClaw(前身为Clawdbot)凭借轻量化部署架构、强大的AI任务自动化执行能力和灵活的生态拓展性,成为企业数字化办公升级的核心工具。阿里云提供的弹性计算资源、成熟的容器化部署环境与企业级安全防护体系,为OpenClaw的稳定运行提供了坚实支撑;而企业微信作为国内主流的企业协同办公平台,与OpenClaw的深度联动,可实现“企业微信发指令、AI自动化落地”的全流程办公提效。本文基于2026年最新实测经验,从阿里云环境搭建、OpenClaw部署、企业微信接入配置到运维优化,提供包含完整代码命令的保姆级教程,零基础用户也能按步骤零失误完成部署与集成。
2880 10
|
4月前
|
弹性计算 安全 机器人
2026年OpenClaw(原Moltbot)阿里云部署+飞书接入保姆级教程
2026年OpenClaw(前身为Moltbot)凭借轻量化部署、强大的AI任务执行能力与灵活的生态集成特性,成为企业智能化办公的核心工具。阿里云提供的弹性计算、安全防护与便捷的容器化部署环境,为OpenClaw的稳定运行提供了坚实基础;而飞书作为国内主流的协同办公平台,与OpenClaw的深度联动,可实现“飞书发指令、AI做执行”的全流程办公自动化。本文基于2026年最新实测经验,从环境准备、阿里云部署、飞书接入、故障排查到运维优化,提供包含完整代码命令的保姆级教程,确保零基础用户也能零失误完成部署与集成。
2798 1
|
人工智能 物联网 UED
Soundwave:语音对齐黑科技!开源模型秒解翻译问答,听懂情绪波动
Soundwave 是香港中文大学(深圳)开源的语音理解大模型,专注于语音与文本的智能对齐和理解,支持语音翻译、语音问答、情绪识别等功能,广泛应用于智能语音助手、语言学习等领域。
1139 13
Soundwave:语音对齐黑科技!开源模型秒解翻译问答,听懂情绪波动
|
人工智能 安全 Java
对比测评:AI编程工具需要 Rules 能力
通义灵码Project Rules是一种针对AI代码生成的个性化规则设定工具,旨在解决AI生成代码不精准或不符合开发者需求的问题。通过定义编码规则(如遵循SOLID原则、OWASP安全规范等),用户可引导模型生成更符合项目风格和偏好的代码。例如,在使用阿里云百炼服务平台的curl调用时,通义灵码可根据预设规则生成Java代码,显著提升代码采纳率至95%以上。此外,还支持技术栈、应用逻辑设计、核心代码规范等多方面规则定制,优化生成代码的质量与安全性。
3092 115
|
关系型数据库 MySQL
mysql查看当前实时连接数最大连接数
mysql查看当前实时连接数最大连接数
3020 0
|
存储 安全 开发工具
GitHub 支持双因素认证(2FA)
【9月更文挑战第29天】
3236 6
|
存储 Ubuntu jenkins
CI/CD 工具比较:Jenkins、GitLab CI、Buildbot、Drone 和 Concourse
CI/CD 工具比较:Jenkins、GitLab CI、Buildbot、Drone 和 Concourse
1795 0