Jenkins入门之执行Powershell脚本

Posted 周国通

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins入门之执行Powershell脚本相关的知识,希望对你有一定的参考价值。

之前章节提到过powershell,如果需要构建复杂的任务时,使用cmd不是很方便(也可能是由于笔者不太熟悉cmd命令,这里见笑了),这时候powershell就派上用场了,这里并不详细介绍powershell脚本,如果有需要以后另开章节讲解powershell基本命令,powershell面向对象编程,powershell脚本调试,C#编写powershell cmdlet,powershell相关工具等.本篇主要介绍如何在Jenkins环境中运行powershell命令.

目前主要有两种方法在Jenkins环境中运行powershell脚本:通过windows batch command运行powershell和使用powershell Jenkins插件运行powershell

  1. 使用windows batch command运行powershell.这里主要是使用powershell.exe来执行powershell脚本,跟在windows下使用cmd执行exe并没有什么两样.

    下面我们创建一个新项目,名称叫作RunPowershellInCmd,仍然选择FreeStyle Project,我们略过几个和当前项目无关的栏目,直接进入Build 点击

    选择红框框选的命令

    这时候界面上会出现如下命令框,我们说过,可以在这里像在cmd里面一样输入各种cmd命令

    我们输入以下命令后点击保存

    点击保存以后,然后执行Build Now执行一次构建.我们可以看到命令是执行成功的

    点击构建记录#1进入详情,然后点击左侧console output查看输出详情

    我们可以看到Jenkins实际上创建的一个临时bat命令来执行一个cmd命令.这里之所以没有输出结果,是因为当前命令的执行环境为Jenkins安装目录下的当前项目目录,里面默认是空的,所以没有内容,如果我们在编写命令里如果指定-path为powershell指定要列出哪个目录下的内容,则你将会看到此处会输出此目录下的内容.当然你也可以在当前工作目录下面添加一些随机内容,然后再执行一次构建,看看输出内容的变化.

     

    使用powershell.exe来执行powershell脚本时还可以指定一些参数,注意这里的参数并不是powershell命令的参数,而是powershell.exe运行时支持的参数.

    支持的参数请看以下文档:

    https://technet.microsoft.com/zh-cn/library/dd315276.aspx

    这里介绍几个有用的参数:

-ExecutionPolicy脚本默认执行策略.

Powershell脚本的默认执行策略,如果相要执行远程脚本必须设置此选项为RemoteSigned, Unrestricted或者Bypass.关于powershell 执行策略,请看以下文档

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-6

-Comand 要执行的命令,比如上面我们执行的是get-childitem

-File 要执行的powershell脚本文件,如果脚本内容很长时,我们往往保存成一个ps1文件,这里通过-File参数指定ps1文件所在的位置

-Sta单线程启用powershell,如果脚本中有非线程安全代码,多线程启动则可能会造成数据状态错误,此时需要指定-sta.

-help 获取关于powershell的帮助,一般的程序都会提供这样一个参数,通过此参数可以快速找到一些想要的帮助,而不需要去查看文档或者笔记

 

  1. 通过插件来运行powershell脚本.

    很多时候通过powershell.exe来执行powershell并不是很方便,幸运的是Jenkins里面有可以直接运行powershell脚本的插件.下面来看看如何使用

    如果不在Jenkins主界面请点击左上角人头标志切换到主界面,然后点击左侧的Manage Jenkins按钮

    进入到如下界面:

    点击进入如下界面

     

    大家的跟我的可能稍不一样,因为我已经安装的一些插件,所以这里会提示升级.

    点击上面的Available标签

     

    我们在Filter框输入Powershell搜索powershell插件

    这时候我们勾选powershell插件前面的复选框,并点击Install Without Restart按钮

    这时候进入插件安装界面:

    等一会我们发现powershell安装成功

    勾选Restart Jenkins when installation is complete and no jobs are running前面的复选框,使jenkins重启,以使插件生效

    等Jenkins重启完成以后,我们新建一个任务叫作ExecutePsCmd

    当我们点击Add Step Build时,如果powershell安装成功,便会多出一个选项

    我们点击它并添加以下命令:

    注意这里我们可以添加像本地powershell窗口里一样的命令.有些小伙伴可能会看到我这里get-date全是小写,但是很多教程上都开头首字母大写.Powershell是大小写不敏感的脚本语言,完成全是小写也是ok的.

    点击保存以后执行Build Now然后打开#1任务记录,看看窗口输出内容:

    Jenkins powershell插件成功执行一条powershell脚本

以上是关于Jenkins入门之执行Powershell脚本的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins powershell脚本中的转义空间和解析变量不起作用

如何在我的 Powershell 脚本中使用 Jenkins 变量

Jenkins基础篇 系列之-—11 实现SQL脚本批量执行2

Jenkins基础篇 系列之-—11 实现SQL脚本批量执行2

powershell 远程执行bat脚本,去启动一个应用,如何让应用一直运行,powershell能正常退出?

如何在Jenkins作业执行中包含域用户