用于触发Jenkins作业的PowerShell命令引发身份验证错误

用于触发Jenkins作业的PowerShell命令引发身份验证错误,powershell,jenkins,Powershell,Jenkins,上面是用于触发Jenkins作业的PowerShell代码。但在执行此操作时,我面临“需要身份验证”错误。但是来自curl的相同命令工作正常 我不确定我是否缺少URL中的某些内容,或者缺少提供从PowerShell访问的Jenkins插件。出现身份验证错误的原因是您需要将身份验证转换为基本64字符串。下面是您可以使用的脚本,如果您尚未在Jenkins中启用 $Auth = "admin:password" $JenkinsURL = "http://$Auth@172.24.235.27:808

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


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

出现身份验证错误的原因是您需要将身份验证转换为基本64字符串。下面是您可以使用的脚本,如果您尚未在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中启用了,请使用下面的脚本

$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 

出现身份验证错误的原因是您需要将身份验证转换为base 64字符串。下面是您可以使用的脚本,如果您尚未在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中启用了,请使用下面的脚本

$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 


我不知道这是否是问题所在,但在
$FullURL
中,您将有两个反斜杠,因为您在
$JenkinsURL
变量结尾也有一个反斜杠。您可能需要更改Jenkins管理员帐户的密码以及作业的令牌。现在!这是一个私人地址…@JacobColvin是的。那么?谢谢你的评论。但我认为问题不在于管理员密码或作业令牌,因为相同的url在gitbash命令中运行良好。此外,反斜杠也不是问题。我不知道这是否是问题所在,但在
$FullURL
中,您将有两个反斜杠,因为您在
$JenkinsURL
变量末尾也使用了反斜杠。您可能需要更改Jenkins管理员帐户的密码以及作业的令牌。现在!这是一个私人地址…@JacobColvin是的。那么?谢谢你的评论。但我认为问题不在于管理员密码或作业令牌,因为相同的url在gitbash命令中运行良好。另外,反斜杠也不是问题,但我仍然面临一些问题,比如调用-WebRequest:HTTP错误404访问/git集成/build时出现问题。原因:未找到由Jetty://+Invoke WebRequest-uri“http://$API\u URL/$JobName/build?token=$JobToke…+CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke WebRequest],WebException+FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommands能否发布在$Params['uri']中创建的uri=”"? 从错误来看,作业URI似乎不正确。谢谢,$h.Add。。。应该替换为$header.Add,但是所有其他的看起来都很棒。我不认为问题出在到base64的身份验证数据转换中。我可以通过在POST中传递参数哈希表来触发参数化构建,但不能触发“从阶段重新启动”win Invoke Webrequest。我收到下一个错误:调用RestMethod:window.location.replace('/securityRealm/communitelogin?from=%2Fjob%2Ftestpass%2F');然而,bash curl的“从stage重新启动”需要进行身份验证,但我仍然面临一些问题,比如Invoke-WebRequest:HTTP错误404访问/git集成/build时出现问题。原因:未找到由Jetty://+Invoke WebRequest-uri“http://$API\u URL/$JobName/build?token=$JobToke…+CategoryInfo:InvalidOperation:(System.Net.HttpWebRequest:HttpWebRequest)[Invoke WebRequest],WebException+FullyQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommands能否发布在$Params['uri']中创建的uri=”"? 从错误来看,作业URI似乎不正确。谢谢,$h.Add。。。应该替换为$header.Add,但是所有其他的看起来都很棒。我不认为问题出在到base64的身份验证数据转换中。我可以通过在POST中传递参数哈希表来触发参数化构建,但不能触发“从阶段重新启动”win Invoke Webrequest。我收到下一个错误:调用RestMethod:window.location.replace('/securityRealm/communitelogin?from=%2Fjob%2Ftestpass%2F');但是,bash curl中的“从阶段重新启动”所需的身份验证工作正常。