1

我正在使用运行命令提供程序作为后同步步骤运行 msdeploy(在 powershell 中,作为脚本的一部分),它在远程计算机上运行批处理文件。批处理文件只是执行exit /b 1,这会导致它返回失败代码。

我正在使用 msdeploy v3,并已将 successReturnCodes=0 指定为提供程序参数。

我可以看到批处理文件正在执行,我可以看到 msdeploy 认识到这是一个错误,并记录了以下事实:

Performing '-postSync'...
Info: Using ID '892ee111-27c1-458d-888d-ead28fcab742' for connections to the remote server.
Info: Using ID '49ee88fc-0e1d-4eff-8a75-bccf0e7d680a' for connections to the remote server.
Info: Updating runCommand (d:\testdeploy\test\test.bat).
Info:

Info: C:\Windows\system32>exit /b 1

Error: (13/06/2013 6:06:03 PM) An error occurred when the request was processed on the remote computer.
Error: The process 'C:\Windows\system32\cmd.exe' (command line '') exited with code '0x1'.
Error count: 1.
Error during '-postSync'.

Total changes: 1 (0 added, 0 deleted, 1 updated, 0 parameters changed, 6 bytes copied)
D:\TestDeploy> $LASTEXITCODE
0

但是,msdeploy 成功返回,$LASTEXITCODE 为 0。

有什么方法可以告诉 msdeploy 实际上已经发现了一个错误?(不诉诸于捕获 msdeploy 的输出并检查是否存在“错误计数:”?:)

4

2 回答 2

1

似乎如果您删除successReturnsCodes,它只会报告为警告,但msdeploy 将返回正确的返回码。

我建议您在MSDeploy 论坛上将此作为错误提交。

于 2013-06-17T23:12:51.853 回答
1

事实证明,这是由于 msdeploy v2 和 v3 之间的版本混淆所致。唯一能正确返回退出代码的组合是 v3 客户端和 v3 服务。我使用的是 v3 客户端,但错误地将其连接到 v2 服务。

Richard Szalay 是正确的,successReturnCodes 只是将返回代码的日志从警告更改为信息。

于 2013-06-17T23:25:53.240 回答