Powershell Limit-EventLog OverflowAction不起作用

时间:2014-07-17 16:30:22

标签: powershell event-log

使用PowerShell 4代码:

Limit-EventLog -LogName Application -MaximumSize 64KB -OverflowAction OverwriteAsNeeded

无法产生预期效果。 LogSize已更改,但OverFlow操作未更改。为OverflowAction指定不同的值也无法更改任何内容,并且值OverwriteOlder会抛出一个错误,声称传入的最大大小需要是64kb的倍数,它已经是。

任何人都有任何想法如何让这个工作?

谢谢!

2 个答案:

答案 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 }

注意,如果您复制格式并确保每个格式都设置为迭代,那么您将要仔细检查格式。是在同一条线上。