PowerShellスクリプトからの出力をログに記録するためにStart-Transcript
とを使用しています。Stop-Transcript
スクリプトはアプリケーションのインストールを実行しているため$ErrorActionPreference = "Stop"
、エラーが発生した場合は実行を停止するためにも使用しています。
これに伴う問題は、エラーが発生した場合、エラーがコンソールに出力される前にトランスクリプトが停止することです。これは、エラーがログファイルに含まれないことを意味します。try...finally
これは、次のように使用する場合でも当てはまります。
Start-Transcript "$(Split-Path $MyInvocation.MyCommand.Path -Leaf)-$((Get-Date).toUniversalTime().ToString('yyyy-MM-ddTHH-mm-ss')).log"
$ErrorActionPreference = "Stop"
try
{
Write-Host "various things happening"
Write-Error "an error"
}
finally
{
Stop-Transcript
}
このスクリプトの実行によるコンソール出力は次のとおりです。
E:\> .\Testing.ps1
Transcript started, output file is Testing.ps1-2013-02-18T11-39-27.log
various things happening
Transcript stopped, output file is ...
Write-Error : an error
At ...
エラーメッセージがログに含まれるようにするにはどうすればよいですか?