2016-03-29 19 views
1

私は、イベントログに書き込む際にいくつかのコードを最小限に抑えるソリューションを探しています。私の研究では、イベントログを処理するコマンドレットはパイプラインからの入力を受け付けません(少なくとも文字列を受け入れるべきだと思いますが、それは別のトピックです)。この時点での私の解決策:出力をイベントログにリダイレクト

Write-EventLog -LogName POSH_Tools -Source XXX -EventId 155 -Message "User has chosen to provide separate creditials ($($Creds.username))to authenicate to $Target." 
New-PSDrive -Name ForenTemp -Root \\$Target\$WindowsPath -PSProvider FileSystem -Credential $creds -ErrorAction Stop | Out-Null 
Write-EventLog -LogName POSH_Tools -Source XXX -EventId 155 -Message "" 

それは仕事を終わらせますが、私はちょうどそれがどのようにフォーマットされているか気に入っていません。私はWrite-EventLogをパイプラインから受け入れる関数にラップすることができますが、私にとってはPOSHにネイティブなものがあるかどうかを知りたいだけです。

Write-EventLog blah blah | Write-CommandToEventLog $_ blah blah blah 

答えて

1

イベントログに出力をパイプラインの「ネイティブ」の方法に最も近いものはForEach-ObjectループでWrite-EventLogを実行していることになります:このような何かのように

... | ForEach-Object { Write-EventLog -Message $_ ... } 

そうしないと、ラップする必要がありますWrite-EventLogカスタム機能:

function Out-EventLog { 
    [CmdletBinding()] 
    Param(
    [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)] 
    [string]$Message, 
    [Parameter(Mandatory=$false, ...)] 
    [string]$LogName = 'Application', 
    ... 
) 

    Process { 
    Write-Eventlog -LogName $LogName -Message $Message ... 
    } 
} 
+0

これは私が考えたものです。たぶん私はDevチームに機能要求を提出して、パイプラインからメッセージパラメータを受け入れるようにします。入力とフォーマットの編集をありがとう。 –

関連する問題