2011-09-08 8 views
2

私は、さまざまな形式の出力を生成するスクリプトを持っています - 主に標準出力とエラーチャネルです。Powershell 2:出力のすべてのビットをファイルに転送する簡単な方法はありますか?

script.ps1 > $somefile 2>&1 
script.ps1 | tee-object <args> 
script.ps1 | out-file <args> 

私も試したスタート転写/ストップ・トランスクリプト:

私はのようなものを試してみました。これらの方法論には欠点があります。

UNIXスタイルの呼び出しの最も近いPowerShellの同等とは何か:

myScript.ps1 > $somefile 2>&1 

私はPowerShellで上記のコマンドをしようとすると、私は「出力」と呼ばれ、コンソール上のすべての出力、および長さ0のファイルを参照してください後ろに残る。何がありますか?

EDIT:私の問題のほとんどは、私がWrite-Hostを使用しているという事実にあります。これは私が標準出力ストリームをバイパスしていると思います。しかし、Write-HostステートメントをWrite-Outputに切り替えると、すべての関数の戻り値が破壊されたり、スクリプトが別の方法で大きく歪んだりすることになります。

すべての出力とエラーを同じファイルに確実に取り込めるように、Write-Hostエントリを処理する際の最も賢明なオプションは何ですか?また、Write-Hostからの色付け機能を使用しています...ログファイルにダンプすることを考えているなら、それをあきらめる必要があります。

さらに、Write-Hostなどを使用するかどうかを制御するコマンドライン引数、「-console」を設定することは可能ですか?私のスクリプトは、最初は手作業でインタラクティブに何十回も実行されています。その後、すべての出力/エラーのログが必要となる年に1回、毎日1時間ずつ実行されます。

答えて

1

私は私の努力に焦点を当てて、開始と終了の記録を残したいと思います。 PSRemote経由で別のサーバーへの呼び出しを代行するサーバー上のスクリプトを呼び出しているクライアントを含む3層システムで使用すると、それは私にとって素晴らしい仕事です。出力はきれいで簡単に解析できます。

出力をOut-Defaultにパイプしない限り、ネイティブコマンドで失敗します。そして、あなたはそれを気にすることはできません。 1つのトランスクリプトは一度にすべて取得できますが、十分です。

+0

を行うことができ、私はあなたが正しいと思います。私がこれを投稿してからあなたが返答した時から、私が思い付くことができる最高のものは、開始 - 転写物と停止転写物です。あなたのアイデアをありがとう! – Larold

+0

PowerShellスクリプトでのログ記録で良好な結果を示し、transcriptコマンドレットを使用したときの問題を示しています。 http://blog.magenic.com/blogs/daniels/archive/2008/07/12/_2200_Logging_2200_-Script-Output-in-Powershell.aspx –

2

代わりの

myScript.ps1 > $somefile 

をやってあなたは

powershell myScript.ps1 > $somefile 
関連する問題