0

現在、サーバーのプリンターイベントログを取得する次のコード行があります。

Get-EventLog -ComputerName ********* -LogName System -Source Print|where-object{$_.timeGenerated -gt (get-date "2013-03-11")}|select-object eventid,timegenerated,message |export-CSV -Path "C:\temp\export.csv"

現時点では、Get-Dateは、コード行に記述した特定の日のプリンターログを取得するように機能します。ただし、一度に1週間のプリンタログを取得するために、これを変更したいと思います。Get-Dateに関するTechNetの記事を見ていましたが、1日ではなく、前の週の結果を取得するように指定する方法については何もわかりません。どうすればよいですか?

編集:また、特定の日付を指定する必要がない方法を見つけたいと思います。たとえば、コードの日付を変更せずに、今週のログを取得し、次の週に新しいログを取得できるようにしたいとします。

4

3 に答える 3

5

これは、以前の投稿「 WMI を使用してプリンター ログを取得する」のフォローアップであると想定しています。

Get-EventLogその質問に対する私の回答で指摘したように、.ではなく、ソースでフィルタリングする必要がありますWhere-Object。は、これにとGet-EventLogの 2 つのパラメーターを提供します。-Before-After

ソースでフィルタリングすることにより、ネットワーク経由で送信されるデータが大幅に削減され、パフォーマンスが大幅に向上する可能性があります。また、リモート システムがリクエストを処理するために必要な時間も短縮されます。見ることさえせずに破棄するデータを要求して取得するのはなぜですか?

1 週間前から現在までのすべてを取得するには、次の手順を実行します。

get-eventlog -computername ******* -logname system -after $((get-date).adddays(-7).date) -before $(get-date) -source Print | select-object eventid,timegenerated,message |export-CSV -Path "C:\temp\export.csv"

-Afterおよびに渡される値-Beforeを必要に応じて変更します。

于 2013-03-14T18:52:17.107 に答える
0

あなたの Where-Object は、その日付より後のレコードのみを返しています。

Where-Object { $_.timeGenerated -gt (get-date "2013-03-11") }

日付範囲を取得するには

Where-Object { $_.timeGenerated -gt [datetime]'2013-03-11' -and $_.timeGenerated -lt [datetime]'2013-03-18' }

これは基本的に次のように言っています: (下限) 2013-03-11 < (ログエントリ生成日) < 2013-03-18 (上限)

于 2013-03-14T18:41:48.453 に答える
0

whereステートメントに別のテストを含めます。このような:

Get-EventLog -ComputerName ********* -LogName System -Source Print |
where-object{$_.timeGenerated -gt ([datetime]"2013-03-11") -and $_.timeGenerated -lt ([datetime]"2013-03-18")} |
select-object eventid,timegenerated,message |
export-CSV -Path "C:\temp\export.csv"

イベントが 2013 年 3 月 11 日より新しく、2013 年 3 月 18 日より古いかどうかを確認します。

于 2013-03-14T18:41:58.860 に答える