Jenkins入门之执行Powershell脚本

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

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

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

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

    选择红框框选的命令 安全

    这时候界面上会出现以下命令框,咱们说过,能够在这里像在cmd里面同样输入各类cmd命令 多线程

    咱们输入如下命令后点击保存 工具

    点击保存之后,而后执行Build Now执行一次构建.咱们能够看到命令是执行成功的 ui

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

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

     

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

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

    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脚本