Powershell

限制 Windows 事件日誌大小的正確方法是什麼?

  • August 3, 2020

我正在尋找一種使用 PowerShell 或命令行腳本限制 Windows 事件日誌大小的最佳方法。我想在安裝我的應用程序期間執行此腳本以增加安裝程序部署的日誌的限制。

到目前為止,我嘗試的是使用 power shell 的 limit event log 命令,Limit-EventLog -LogName "logName" -MaximumSize xxMB但是此命令找不到日誌。

接下來,我嘗試使用安裝程序添加“File”和“MaxSize”系統資料庫項:我在 下創建了一個與事件日誌名稱匹配的鍵SYSTEM\CurrentControlSet\Services\EventLog、一個名為“File”的字元串值、數據、日誌文件的完整路徑,一個名為 ‘MaxSize’ 的 dword 值和我想設置的最大大小為字節的數據值。這似乎可行,但是這會使日誌以有趣的方式顯示在事件查看器中。

在此處輸入圖像描述

我還注意到最大日誌大小可以直接從事件查看器中更改,並且此更改根本不會反映在系統資料庫中。例如,事件日誌“Microsoft-Windows-TaskScheduler/Operational”的限制為 10MB,但在“SYSTEM\CurrentControlSet\Services\EventLog”下沒有相應的系統資料庫項

我正在尋找的是一個可以讓我獲得相同效果的腳本。

不要更改系統資料庫中的值,這可能會導致意外行為。

您可以使用 Powershell,但不能使用Limit-EventLog,因為文件說這僅適用於經典事件日誌(在 Windows Vista 之前)。

包含 EventLog 名詞的 cmdlet(EventLog cmdlet)僅適用於經典事件日誌。若要在 Windows Vista 和更高版本的 Windows 中從使用 Windows 事件日誌技術的日誌中獲取事件,請使用 Get-WinEvent。

您可以通過修改使用Get-WinEvent獲得的對象來更改事件日誌大小:

$targetLog = Get-WinEvent -ListLog "Company-Product-Module/Operational"
$targetLog.MaximumSizeInBytes = 2105344
$targetLog.SaveChanges()

如果您不知道日誌的確切名稱,可以使用Get-WinEvent -ListLog *查看所有日誌

引用自:https://serverfault.com/questions/1028660