背景
在Jenkins Pipeline里面,我们经常会使用powershell脚本执行一些必要操作,比如Build项目、部署Service、配置网络等等。有时候我们还需要进行远程的操作,比如当目标机器是另一台虚拟机,或者是一个K8S的节点。本文探讨一个在远程执行powershell命令时遇到的小问题。
问题重现
我的项目里有一个需求是,将build出来的service部署到远端的server上。部署的过程其实就是文件拷贝的过程,在部署前需要调用Get-Service
判断service是否存在,以及用Stop-Service
停止正在执行的service。这两个powershell脚本的调用出了问题。
Get-Service $service -ComputerName $server -ErrorAction SilentlyContinue | Stop-Service -ErrorAction SilentlyContinue
复杂性在于,这条命令在一个Jenkins的静态slave结点上执行没有问题,而在一个动态分配的slave结点