Jenkins配置Powershell脚本,通过脚本控制开发/测试服务器

序言

因为需要在Windows上编译和部署程序,因此需要借助PowerShell的脚本力量完成这些事情。

目标服务器是windows server2022,因此不需要初始化WinRM服务,省却了不少的麻烦,让我们可以直接通过Powershell远程服务器,执行命令。

1. 开启远程会话

使用过SSH的都知道,在linux下这个命令极其强大,基本可以做任何事情,当然windows页支持ssh,只不过由于缺少相关命令,还不如直接使用powershell来得直接。

闲话少叙,让我们看看怎么使用PowerShell来远程主机。

Enter-Pssession 192.168.4.189 -Credential administrator

71c7e4dc62571b502c6cf812708ac3d9.png
输入密码,就可以访问远程计算机了。

当然,由于Jenkins无法交互,因此,这里,需要转变下密码,作为密钥参数输入才行。

$pass=ConvertTo-SecureString -String'your password'-AsPlainText -Force
$cre=New-Object pscredential('your username', $pass)
$session=New-PSSession -ComputerName $server -Credential $cre

然后利用 Invoke-Command 就可以远程执行命令了。

2. 信任错误

如果执行 New-PSSession出现错误:如果身份验证方案与 Kerberos 不同,或者客户端计算机未加入到域中, 则必须使用 HTTPS 传输或者必须将目标计算机添加到 TrustedHosts 配置设置。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts列表中的计算机可能未经过身份验证。通过运行以下命令可获得有关此内容的更多信息: winrm
help config。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。

那么,这说明你需要在执行计算机的信任列表内增加服务器Ip地址。

一般操作步骤如下:

#1. 切到管理的client目录下
cd WSMan::localhost\client
#2. 查看子项,其中TrustedHosts会列出本机已添加的可信主机IP
Get-ChildItem
#3. 将被控服务器IP添加为可信主机
Set-Item ./TrustedHosts 192.168.4.189
#4. 再次获取子项时
Get-ChildItem ./TrustedHosts
#5. 将所有主机添加为可信主机*
Set-Item ./TrustedHosts *

一番精打细算,你应该可以获取到session了,session在手,江山我有!

3. Jenkins 调用

# ===设定登录===
$pass=ConvertTo-SecureString -String $ENV:devpassword -AsPlainText -Force
$cre=New-Object pscredential($ENV:ServerUser, $pass)
$session=New-PSSession -ComputerName $ENV:TestServer -Credential $cre

# === 登录===
  if($session){
    Write-Output "连接到系统开发环境..."
    try{    
    	Copy-Item "$ENV:WORKSPACE/$package" -Destination $dest -ToSession $session -Recurse -Force
    	Invoke-Command -Session $session -ScriptBlock{ param($p1, $p2, $p3)
          if(!(Test-Path $p3)){ 
           		mkdir $p3
           }
          ChDir $p1     
          Expand-Archive "$p2" -DestinationPath "$p3" -Force
          Copy-Item -Path "$p3/dist/*" -Destination "$p3" -Recurse -Force
          Remove-Item "$p3/dist" -Recurse -Force
    	} -ArgumentList $dest, $package,$deploy   
      Write-Output "发布程序到系统开发环境..."
      
    }
    finally{     
      Remove-PSSession -Id $session.Id 
    }
  }
  else{
    # throw "This is an error."
    Write-Error "不能连接系统开发环境..."
  }

12b1f1792ed66207c74acbd015bb6aab.png

结语

太赞了,希望能帮到你。

👓都看到这了,还在乎点个赞吗?

👓都点赞了,还在乎一个收藏吗?

👓都收藏了,还在乎一个评论吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值