2

サーバーで過去 24 時間にログで生成されたデータの量を調べようとしています。

このコマンドで見つかったファイルサイズを要約することを考えました:

Get-WinEvent -ListLog * | Where-Object {$_.LastWriteTime -gt ((Get-Date) - (New-TimeSpan -Day 1))} | Format-List -Property LogName, FileSize, LastWriteTime

これに関する問題は、C:\Windows\System32\winevt\Logs にあるファイルに最後に書き込んだときだけを取得しているように見え、メモリ内にあるように見えるものを取得していないように見えることです。スクリプトが実行される瞬間まですべてを探しています!

より良い方法で私を助けてもらえますか?

4

1 に答える 1

3

そのためには、ログからイベントを読み取る必要があります。

Get-EventLog -ListLog | Foreach {
    $_ | Get-WinEvent { ... processs the events ... }}

残念ながらSize、EventLogRecord オブジェクトにはプロパティがありません。ToXml() メソッドを使用して、生成された XML の長さを取得できます。しかし、それはかなり粗雑です。別の方法は、すべてのプロパティのサイズを合計することです。オブジェクト構造が固定されているため、bool、int、guid などのプロパティのサイズを事前に計算できます。ただし、実行時に文字列の長さを決定する必要があります。

于 2013-11-13T21:07:50.017 に答える