次のように(%
そのビルトインされたエイリアス)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を使用することができます
ログ書き込みと仮定すると、あなたが自分で書いた関数でありますか?それを呼び出すたびに、その関数に渡されたものにWrite-Hostを実行することはできませんでしたか? –
'LogWrite'がOPの制御権を持っている場合、関数はpassthruを実装できます:' 'Node Id is ...」| LogWrite -PassThru | write-Host' – xXhRQ8sD2L7Z
@ campbell.rwはい、LogWriteは私が持っていたメッセージを受け取り、スクリプトの前に作成されたログファイルに追加した私の独自の関数です –