【发布时间】:2019-05-18 05:23:21
【问题描述】:
每当发生以下审计系统事件 ID 时,我需要向用户显示一条消息:1100、1102、1104、1108、4612 和 4719。
消息窗口的标题栏应该说,例如,“事件 ID:1100”
我还需要知道如何触发这些事件。
到目前为止,我已经完成了以下工作:我目前正在使用 Windows 任务计划程序。对于事件 ID 1102,我设置了以下触发器:
On event - Log: Security, Source: Microsoft-Windows-Eventlog, EventID: 1102
连同以下要在 powershell 中运行的操作:
-executionpolicy bypass -windowstyle hidden -file C:\1102.ps1
这是我的 1102.ps1 脚本的样子:
Add-Type -AssemblyName System.Windows.Forms
$lastEvt = Get-WinEvent -LogName 'Security' -MaxEvents 20 | ? { $_.Id -eq 1102 } | select -First 1
[System.Windows.Forms.MessageBox]::Show(($lastEvt.Message), 'Event ID: 1102')
通过进入事件查看器并清除安全日志,我可以显示所需的消息。但是,我希望能够在我的任务计划程序操作的末尾添加一个字符串参数,而不是在我的 .ps1 脚本中输入字符串文字“事件 ID:1102”。这将允许我对任何事件 ID 使用相同的脚本。
除此之外,我无法让消息针对任何其他事件显示(使用与上面详述的相同的触发器/操作/脚本,但具有适当的事件 ID)。例如,我进行了系统审核策略更改(事件 ID 4719),该更改已记录到事件查看器的安全日志中,但由于某种原因没有显示任何消息。至于其他的,我还没想好怎么手动触发。
【问题讨论】:
-
为什么不像
Add-Type -AssemblyName System.Windows.Forms $lastEvt = Get-WinEvent -LogName 'Security' | select -First 1 Write-Host "Event ID: " $lastEvt.Id -
@Rthomas529 不起作用,当我按照您的建议修改脚本时,我根本没有收到任何消息。
-
@TeddyF 您是否尝试过“以最高权限运行”选项。
-
@LT- 与哪个解决方案结合使用?
-
@TeddyF 关于这个推荐“最重要的是,我无法让消息出现在任何其他事件中(使用与上面详述的相同的触发器/动作/脚本,但使用适当的事件 ID)。”但不管任何评论。为了处理安全事件,您应该始终以最高权限运行计划任务。
标签: windows bash powershell