运行msdeploy时检测远程运行命令失败

时间:2013-06-13 08:13:48

标签: powershell msdeploy runcommand

我正在运行msdeploy(在powershell中,作为脚本的一部分),并将runco​​mmand提供程序作为postsync步骤运行,该步骤在远程计算机上运行批处理文件。批处理文件只执行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的输出并检查是否存在'错误计数:'?:)

2 个答案:

答案 0 :(得分:1)

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

我建议您将此文件作为MSDeploy forums上的错误提交。

答案 1 :(得分:1)

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

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