如何在vNext发布模板的部署日志中获得powershell脚本输出?

时间:2015-01-14 17:38:22

标签: powershell release-management ms-release-management

这篇博文是我发现的唯一接近问题的帖子,但它没有解释如何配置使用PS / DSC部署以使用详细选项运行: http://nakedalm.com/create-log-entries-release-management/

我可以使用这个基于代理的发布模板来运行脚本:

Write-Debug "debug"
Write-Output "output"
Write-Verbose "verbose"
Write-Warning "warning"

向下钻取此版本的部署日志会提供包含以下行的日志:

output
WARNING: warning

如果我在Arguments字段中添加-verbose,我也会得到一个" VERBOSE:verbose"日志中的行。

这很棒,但我需要访问系统变量($ Stage,$ BuildNumber等)。当我创建一个vNext模板来运行相同的脚本时(说明在这里:http://www.visualstudio.com/en-us/get-started/deploy-no-agents-vs.aspx),日志报告:

Copying recursively from \\vsalm\Drops2\TestBuild\TestBuild_20130710.3 to c:\Windows\DtlDownloads\my vnext component succeeded.

很好,这个复制操作成功了,但我也希望我的脚本输出也在这个日志中。有没有人知道如何配置"部署使用PS / DSC"动作,以便发布管理捕获powershell脚本输出?

2 个答案:

答案 0 :(得分:5)

对于vNext发布模板,如果要在日志中查看powershell脚本输出,请尝试使用-verbose开关Write-Verbose

EG。 Write-Verbose "Some text" -verbose

答案 1 :(得分:1)

请允许我无耻地插入关于此主题的my own blog article,因为我发现制作一个能完成所有事情的脚本并不容易。

以下脚本框架确保在没有空行的情况下记录stdout输出,并且在第一个错误上停止处理,在这种情况下,错误详细信息和到该点的stdout输出在MSRM中都可见:

function Deploy()
{
    $ErrorActionPreference = "Stop"

    try
    {
        #
        # Deployment actions go here.
        #
    }
    catch
    {
        # Powershell tracks all Exceptions that occured so far in $Error
        Write-Output "$Error"

        # Signal failure to MSRM:
        $ErrorActionPreference = "Continue"
        Write-Error "Error: $Error"
    }
}

pushd $Global:ApplicationPath
Deploy | Out-String | Write-Verbose -Verbose
popd

这只是最终结果,可以找到它背后的解释here