2016-12-20 7 views
2

私はPowerShellの新機能で、自分自身でそれを教えています。私の質問は、同じ行に「書き込みホスト」と「ログ書き込み」を1つのアクションとして実行できますか?Write-HostとLogは1行にありますか?

私は何を持っていることはこれです:

Write-Host "Node Id is $nodeProps["NodeID"]" 
LogWrite "Node Id is $nodeProps["NodeID"]" 

でも好きなことを行う方法がある場合、私は思ったんだけど:任意およびすべてのヘルプのための

Write-Host, LogWrite "Node Id is $nodeProps["NodeID"]" 

感謝を!

+0

ログ書き込みと仮定すると、あなたが自分で書いた関数でありますか?それを呼び出すたびに、その関数に渡されたものにWrite-Hostを実行することはできませんでしたか? –

+0

'LogWrite'がOPの制御権を持っている場合、関数はpassthruを実装できます:' 'Node Id is ...」| LogWrite -PassThru | write-Host' – xXhRQ8sD2L7Z

+0

@ campbell.rwはい、LogWriteは私が持っていたメッセージを受け取り、スクリプトの前に作成されたログファイルに追加した私の独自の関数です –

答えて

4

次のように(%そのビルトインされたエイリアス)ForEach-Objectコマンドレットでパイプラインを使用することができます。

"Node Id is $($nodeProps["NodeID"])" | % { Write-Host $_; LogWrite $_ } 

注意を$nodeProps["NodeID"]ニーズへの参照が機能する$(...)で囲むことにする方法。

あなたはこれを繰り返し必要な場合は、(単純な)関数を定義:あなたはのアイデアを気に入らない場合

function writeAndLog([string] $msg) { Write-Host $msg; LogWrite $msg } 

writeAndLog "Node Id is $($nodeProps["NodeID"])" 

PS:campbell.rwのコメントに促さをForEach-Objectを使用する - 通常はループより複数の入力オブジェクト - シングル入力項目、あなたが&で、スクリプトブロックを使用することができ、呼び出し演算子

& { Write-Host $args[0]; LogWrite $args[0] } "Node Id is $($nodeProps["NodeID"])" 

$argsは、すべての(非結合)の引数の集まりなので、$args[0]は最初のものをいいます。 (この特定のケースでは、ちょうど$argsがあまりにも働いているだろう参照。)あなたは、ファイルへのパイプラインの流れをコピーするTee-Object cmdletを使用することができます

+0

ループのポイントがわかりませんなぜなら、私はもう一つの答えが好きなのです。 –

+0

@ campbell.rw:単一の入力オブジェクトでは、_loop_ではありません - スクリプトブロック( '{...}')は_once_だけ呼び出されます。もう1つの答えはパイプライン入力を_file_に送る方法を示しています。これは一般的には知っているが、質問に直接関連していないことがわかります( 'LogWrite'が何をしているのか分かりません。ファイルへの書き込みだけでなく、_appending_の代わりにそのファイルを_replacing_するのではなく) – mklement0

+0

@ mklement0うん、これは私が探しているかもしれないように見える!私はこのショットを与え、あなたに知らせる、ありがとう! –

1

を:

"Node Id is $($nodeProps["NodeID"])" |Tee-Object -FilePath C:\dev\test2.txt -Append |Write-Host 
+0

'Tee-Object'は一般的に便利ですが、OPの' LogWrite'が何を具体的にしているのか分かりませんが、その名前は_replacing_毎回のログファイルが良い考えではないことを示唆しています。 '-Append'を追加してください。 それ以外に、 'LogWrite'が(タイムスタンプを追加するなどして)メッセージをファイルに追加するだけでは解決できない場合、この解決策は機能しません。 – mklement0

+1

@ mklement0絶対に真です。追加パラメータを追加 –

関連する問題