1

WMIを使用して、複数のサーバーからプリンターシステムログを取得しようとしています。1週間前、私は次のコードを作成しましたが、これは何らかの理由で時々しか機能しません。

wmic /node:<servername> NTEvent WHERE "logfile='System' AND SourceName='Print' AND TimeGenerated > '20130219'" get EventCode,TimeGenerated,Message 

このコード行は機能する場合がありますが、ログを取得するために実行しようとすると、ほとんどの場合、次のエラーが発生します。

ERROR:
Code = 0x80020009
Description = Exception occurred.
Facility = Dispatch

なぜこれが起こっているのか誰かが知っているのではないか、そして私のコードを書き直すためのより良い方法があるのだろうかと私は思っていました。コマンドレットの使用を検討しましたがget-wmiobject、取得しようとしているのと同じログをフィルタリングして取得する方法がわかりません。

4

1 に答える 1

0

これを行うには2つの方法があります。どちらも使用しませんGet-WMIObject

オプション1:イベントログ全体を取得してから、フィルタリングします。

Get-EventLog -LogName System -Source Print|where-object{$_.timeGenerated -gt (get-date "2013-02-19")}|select-object eventid, timegenerated,message | Export-csv -path r:\log.csv -notypeinfo;

オプション2:ソースでフィルタリングする

Get-WinEvent -FilterHashtable @{logname='system';source='print';StartTime=(get-date "2013-02-19").date;}|select-object id,timecreated,message;

ベストプラクティスは、データのソースにできるだけ近いところでフィルタリングすることです([左にフィルター]、[右にフォーマット])。この場合はオプション2になります。

于 2013-03-04T21:10:08.017 に答える