PowerShell命令触发Jenkins作业会引发身份验证错误

时间:2019-01-09 14:36:27

标签: powershell jenkins

$Auth = "admin:password"
$JenkinsURL = "http://$Auth@172.24.235.27:8080/"
$JobName = "TestItem1"
$JobToken = "token"
$FullURL = "$JenkinsURL/job/$JobName/build?token=$JobToken"
Invoke-WebRequest -UseBasicParsing $FullURL

上面是用于触发Jenkins作业的PowerShell代码。但是在执行此操作时,我遇到“需要身份验证”错误。但是来自curl的相同命令可以正常工作。

我不确定是否缺少URL中的某些内容或缺少某些Jenkins插件以提供对PowerShell的访问。

1 个答案:

答案 0 :(得分:0)

收到身份验证错误的原因是,您将需要将身份验证转换为base 64字符串。如果您尚未在Jenkins中启用CSRF,则可以使用以下脚本。

 <div id="canvas-container-hidden">
    <canvas id="image_canvas"></canvas>
</div>

但是,如果您在Jenkins中启用了CSRF,请使用以下脚本

$UserName = "admin"
$Password = "password"
$API_URL = "jenkinsservername"
$JobName = "TestItem1"
$JobToken = "token"
$header = @{}
$Params = @{}
$header.Add('Authorization', 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("$(${UserName}):$(${Password})")))
$Params['uri'] = "http://jenkinsservername/$JobName/build?token=$JobToken"
$Params['Method'] = 'Post'
$Params['Headers'] = $header
Invoke-RestMethod @Params