使用PowerShell 4代码:
Limit-EventLog -LogName Application -MaximumSize 64KB -OverflowAction OverwriteAsNeeded
无法产生预期效果。 LogSize已更改,但OverFlow操作未更改。为OverflowAction指定不同的值也无法更改任何内容,并且值OverwriteOlder会抛出一个错误,声称传入的最大大小需要是64kb的倍数,它已经是。
任何人都有任何想法如何让这个工作?
谢谢!
答案 0 :(得分:0)
不是纯粹的PowerShell解决方案,但您可以使用wevtutil内置命令来执行此操作:
您的overflowaction
参数与wevtutil中的retention
参数相对应(true =保留旧事件 - >新事件将被拒绝)
设置配置:
wevtutil.exe sl application /Rt:false
答案 1 :(得分:0)
好的,问题只发生在现有值是归档的时候(从#34改变时它可以正常工作;不要覆盖")。
原因似乎是当它被设置为存档一个名为" AutoBackupLogFile"已创建并且现有密钥"保留"设置为最大值,但cmdlet无法正确更改这些值,因此它是cmdlet的错误,不幸的是,如果您尝试将值从Archive更改为其他值,则cmdlet将无法用于此目的。这里最好的答案是直接调整相应的注册表项。
另请注意,cmdlet对于事件日志的最小允许大小不正确。最小大小实际上是1mb,因此64kb不是有效值。
这是一个简单的脚本,可以将所有3个主日志更改为最小的大小,并根据需要调整为覆盖(如果您只想执行应用程序,只需从阵列中删除安全性和系统):
@('Application','Security','System') | % {
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\$_" -Name MaxSize -Type DWORD -Value 0x00100000 -Force
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\$_" -Name AutoBackupLogFiles -Type DWORD -Value 0 -Force
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\$_" -Name Retention -Type DWORD -Value 0 -Force
}
注意,如果您复制格式并确保每个格式都设置为迭代,那么您将要仔细检查格式。是在同一条线上。