如何将Windows凭据与Jenkins中的“登录用户”链接以运行Powershell脚本

时间:2019-11-08 14:08:55

标签: jenkins-pipeline jenkins-groovy

我正在尝试通过以下方式使用Powershell脚本运行一些SQL SERVER命令:启用“集成安全性”(期望使用Winodows Access连接SQL服务器),然后将该Powershell脚本调用到Jenkins Pipeline中,但是它向我抛出“无法连接”错误定位到目标服务器“ ABC \ SQL17”。请验证连接信息,例如服务器名称,登录凭据和防火墙”

我尝试了以下步骤  1.创建“ Jenkins管道” Jenkins工作  2.在Pipeline脚本下调用Groovy脚本以调用Powershell脚本。  3.将“我的Windows登录详细信息”凭据添加为“全局”,并将此凭据与Jenkins登录用户相关联。  4.并与同一用户安排工作。

我希望Jenkins使用Windows凭据来运行此Powershell,但是它没有使用我给出的相同凭据,并且由于用户没有访问权限而导致了抛出错误

以下是示例脚本,我曾经在groovy脚本中使用批处理文件调用Powershell

node {
    stage('Deploy Dacpac to SQL Server') {
        script{
        bat 'start cmd.exe /c D:\\Source\\Test.bat'
        }
    }
}

请告知我如何使用我的凭据来运行此类脚本。

预先感谢您的回复!

1 个答案:

答案 0 :(得分:0)

在寻找了一些文章和博客后,我找到了解决方案,我将项目类型从Pipeline更改为Free Style项目,并在Build Step选项卡下直接调用了Power Shell脚本。

并使用了构建环境中的秘密密钥,并通过加密为存储的用户名和密码提供了两个变量(使用凭据插件进行加密和屏蔽密码)。

Snapshot for configuration

您可以使用以下脚本

$SrvPassword = ConvertTo-SecureString "$($ENV:SrvPassword)" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("$ENV:SrvUser", $SrvPassword)
$SessionDetails = New-PSSession -ComputerName "ServerName" -Credential $Credential

Invoke-Command -Session $SessionDetails -Command {
C:\Test.ps1 
}