首页 > 解决方案 > 詹金斯-> powershell Invoke-WebRequest 与 UseDefaultCredentials

问题描述

我尝试在 Jenkins 从站上执行 PowerShell 脚本。看起来像:

stage ("Get") {
    steps {
        powershell( 
            script: '''
                $srcCommonParams = @{
                    Method = 'GET'
                    Uri = $getUri
                }
                Invoke-WebRequest @srcCommonParams -UseDefaultCredentials -Verbose

问题是默认凭证来自哪里?我认为它们是代表我的 Jenkins 从属 Windows 服务运行的那些。问题是我的 Jenkins slave 以用户 A身份运行,但 Invoke-WebRequest 抱怨用户 B没有足够的权限来执行请求。

标签: powershelljenkins

解决方案


您必须从 Jenkins 那里获得凭据。您必须添加“withCredentials”并在类似于此的 powershell 中:

stage ("Get") {
steps {  withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'your-credentials-id',usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']])

powershell( 
    script: '''
          $encryptedPassword = ConvertTo-SecureString "%PASSWORD%" -AsPlainText -Force
          $mycreds = New-Object System.Management.Automation.PSCredential ("%USERNAME%", $encryptedPassword)
          $srcCommonParams = @{
            Method = 'GET'
            Uri = $getUri
        }
Invoke-WebRequest @srcCommonParams -Credential $mycreds -Verbose

推荐阅读