5

このブログ投稿は、問題に近いことがわかった唯一のものですが、PS/DSC を使用した展開を詳細オプションで実行するように構成する方法については説明していません: http://nakedalm.com/create-log-エントリ-リリース-管理/

このエージェント ベースのリリース テンプレートを取得して、スクリプトを実行できます。

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.

このコピー操作が成功したことは素晴らしいことですが、スクリプトの出力もこのログに記録したいと思います。PowerShell スクリプトの出力がリリース管理によってキャプチャされるように、「PS/DSC を使用して展開する」アクションを構成することについて、誰か考えがありますか?

4

2 に答える 2

5

vNext リリース テンプレートのWrite-Verbose場合、ログで powershell スクリプトの出力を確認したい場合は、-verbose スイッチを試してください。

例えば。Write-Verbose "Some text" -verbose

于 2015-01-20T12:45:26.717 に答える
1

すべてを正しく実行するスクリプトを入手するのは簡単ではないことがわかったので、このテーマに関する私のブログ記事を恥知らずにプラグインさせてください。

次のスクリプト スケルトンは、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

これは最終的な結果にすぎません。その背後にある説明はここにあります。

于 2015-09-21T20:18:53.443 に答える