如何选择 Jenkins 应使用的 Powershell 版本?

How to choose which Powershell version Jenkins should use?

我正在为我的 Jenkins 构建服务器使用 this Powershell 插件。如您所见,最近的更新之一允许选择 Powershell 版本:

我服务器上 运行ning 的版本是 1.7。当我尝试实际更改 Powershell 的版本时出现问题,因为给出的示例使用脚本管道,而我的项目使用声明管道,因此缺少用于版本选择的内置选项。如何强制 Jenkins 使用 Powershell 7.2 而不是默认的 5.*?

我能想到的唯一解决方案是使用 Powershell 5 启动 Powershell 7,然后 运行 我的 .ps1 脚本那样,但这似乎 愚蠢 .

你可以让它成为有条件的。仅当版本大于 5.0 时,此脚本才会使用版本 7.2 重新启动。

if ($PSVersionTable.PSVersion -gt [版本]"5.0") {

powershell -版本 7.2 -文件 $MyInvocation.MyCommand.Definition

退出

}

'run some code'

读取主机提示“脚本已完成:按任意键退出”

在声明式和脚本式管道中,您可以使用 pwsh 步骤 运行 PS 7.x.

中的脚本

声明式:

pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                pwsh '''
                    Write-Host "foo"
                '''
            }
        }
    }
}

脚本化:

node {
     pwsh '''
         Write-Host "foo"
     '''
}