10

Windows イベント ログをエクスポートしようとしていますが、エクスポートされるイベントを数ではなく、イベントがログに記録された時間に基づいて制限しています。私はWindows 7以降でそれをやろうとしています。これまでのところ、私の努力は wevtutil の使用に集中しています。

私は wevtutil を使用していますが、現在のコマンド ラインは次のとおりですwevtutil Application events.evtx。ここでの問題は、ログ全体をエクスポートすることです。これは非常に大きくなる可能性があるため、過去 2 週間だけに制限したいと考えています。

この投稿を見つけましたが、まず、システムで出力が生成されないようです (はい、日付と時刻を変更しました)。次に、回避しようとしている日付形式に依存しているようです。

私が実行した変更されたコマンドは次のとおりです。

wevtutil qe Application "/q:*[System[TimeCreated[@SystemTime>='2012-10-02T00:00:00' and @SystemTime<'2012-10-17T00:00:00']]]" /f:text

&lt;そうしないと構文エラーが発生したため、 and&gt;を実際の記号に置き換える必要がありました。このコマンドは空の出力を生成します。

4

4 に答える 4

14

問題は /q: が引用符で囲まれていることが原因です。次のように、外側にある必要があります。

wevtutil qe Application /q:"*[System[TimeCreated[@SystemTime>='2012-10-02T00:00:00' and @SystemTime<'2012-10-17T00:00:00']]]" /f:text

これは私にとってはうまくいきます。

于 2013-04-11T07:40:29.933 に答える
12

過去 2 週間のイベントについては、timediff日付のハードコーディングを避けるために , を使用することもできます。

Windows はミリ秒を使用するため、1000 * 86400 (秒、= 1 日) * 14 (日) = 1209600000 になります。

クエリの場合、次のようになります

wevtutil qe Application /q:"*[System[TimeCreated[timediff(@SystemTime) <= 1209600000]]]" /f:text /c:1

/c:1過去 2 週間に多くのイベントがあるため、この例では 1 つのイベントのみを取得するように追加しました。

警告とエラーのみをリストすることもできます。そのためには、 を使用できます(Level=2 or Level=3)。(どういうわけか、Level<4Win7ではうまくいかないようです)

wevtutil qe Application /q:"*[System[(Level=2 or Level=3) and TimeCreated[timediff(@SystemTime) <= 1209600000]]]" /f:text /c:1
于 2016-03-07T19:29:21.973 に答える
2

LogParserこの種のタスクに使用することを強くお勧めします。

logparser -i:evt file:query.sql

このquery.sqlようなものを含むと:

SELECT
  TimeGenerated,EventID,SourceName,Message
FROM Application
WHERE TimeGenerated > TO_TIMESTAMP(SUB(TO_INT(SYSTEM_TIMESTAMP()), 1209600))
ORDER BY TimeGenerated DESC

やや非直感的な日付計算では、システム時刻 ( SYSTEM_TIMESTAMP()) が整数 ( TO_INT()) に変換され、1209600 秒 (60 * 60 * 24 * 14 = 2 週間) が減算され、結果がタイムスタンプ ( TO_TIMESTAMP()) に戻され、2 週間から日付が生成されます。前に。

MUL(86400, $days)固定の秒数を次のように置き換え、コマンドラインを次のように変更することで、タイムスパンをパラメーター化できます。

logparser -i:evt file:query.sql+days=14

クエリを直接 logparser に渡すこともできます。

logparser -i:evt "SELECT TimeGenerate,EventID,SourceName,Message FROM ..."
于 2012-10-16T17:45:24.463 に答える
1

PowerShell についてどう感じているかわかりませんが、タグ付けしたすべてのシステムで利用できます。

詳細については、PowerShell プロンプトから Get-Help Get-EventLog -Examples を参照してください。

.cmd または .bat ファイルからこれを行う必要がある場合は、powershell.exe -File powershell_script_file_name を呼び出すことができます。

powershell_script_file_name には、必要な Get-EventLog コマンドが含まれています。

この例は、私がシステムを監査するために使用するすべてのセキュリティ イベント ログの失敗を示しています。

Get-EventLog -LogName security -newest 1000 | where {$_.entryType -match "Failure"}
于 2012-10-16T17:54:34.140 に答える