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 ... }}

不幸的是,EventLogRecord 对象上没有Size属性。您可以使用 ToXml() 方法,然后获取生成的 XML 的长度。不过那是相当粗糙的。另一种方法是将所有属性的大小相加。由于对象结构是固定的,您可以预先计算 bool、int、guid 等属性的大小。但是,您需要在运行时确定字符串的长度。

于 2013-11-13T21:07:50.017 回答