Azure 在Jenkins中使用PsExec,即使脚本失败,也会显示成功

Azure 在Jenkins中使用PsExec,即使脚本失败,也会显示成功,azure,powershell,jenkins,psexec,Azure,Powershell,Jenkins,Psexec,我正在尝试运行powershell脚本,该脚本首先登录azure,然后使用psexec将zip文件部署到azure 我正在使用以下命令: F:\jenkins\VMScripts\PsExec64.exe \\WINSU9 -u "WINSU9\administrator" -p mypassword /accepteula -h PowerShell -noninteractive -File C:\Shared\Trial\webappscript.ps1 我得到的输出为: PsExec

我正在尝试运行powershell脚本,该脚本首先登录azure,然后使用psexec将zip文件部署到azure

我正在使用以下命令:

F:\jenkins\VMScripts\PsExec64.exe \\WINSU9 -u "WINSU9\administrator" -p mypassword /accepteula -h PowerShell -noninteractive -File C:\Shared\Trial\webappscript.ps1
我得到的输出为:

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

[
  {
    "cloudName": "AzureCloud",
    "id": "a7b6d14fddef2",
    "isDefault": true,
    "name": "subscription_name",
    "state": "Enabled",
    "tenantId": "b41cd",
    "user": {
      "name": "username@user.com",
      "type": "user"
    }
  }
]
WARNING: Getting scm site credentials for zip deploymentConnecting to WINSU9...


Starting PSEXESVC service on WINSU9...


Connecting with PsExec service on WINSU9...


Starting PowerShell on WINSU9...



PowerShell exited on WINSU9 with error code 0.
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

它只是给出az login命令的输出,但部署的输出没有显示出来。此外,如果部署失败,它仍将显示成功。但它应该显示失败。

Jenkins作业成功,因为PSExec.exe返回退出代码0,这意味着没有遇到任何错误。如果底层脚本失败,Jenkins作业将失败,例如返回非零退出代码,如1。如果PSExec.exe应用程序没有执行您希望它执行的操作,我会将其包装在另一个脚本中,该脚本执行部署后验证,如果部署失败,则返回1


有关更多详细信息,请参阅。

回答我的问题,以便其他面临相同问题的人可以在此处获得帮助。正如@Alex所说,powershell正在退出,错误代码为0,因此每当任何命令失败时,我都会尝试返回错误代码1。因为Azure CLI的输出是json格式的,所以我将该输出存储在一个变量中,并检查它是否包含任何内容。下面是代码示例

$output = az login -u "username" -p "password" | ConvertFrom-Json
if (!$output) {
    Write-Error "Error validating the credentials"
    exit 1
}

您可以使用powershell步骤,这也应该直接发出错误。

那么,如何使其显示错误,即,如果发生任何错误,它应该返回退出代码1?@请参阅它适用于正常的powershell命令。我甚至尝试过使用-ErrorAction-Stop,但这对普通的powershell命令有效,但对az login-u username-p password等azure命令无效