我有一个脚本,当完成向用户运行它时,我需要将审计事件写入Windows安全日志。
我可以写入除安全日志之外的任何日志。
我该怎么做?
New-EventLog -LogName Security -Source "MyApp"
Write-EventLog -LogName Security -source "MyApp" -EntryType Information -EventId 1 -Message "Script run by X"
当名称从安全性更改为应用程序或系统时,它可以正常工作 - 但是,在使用安全性时,我会继续获得以下信息:
Write-EventLog:源的日志“安全性”的注册表项 无法打开“msevent”。在行:1个字符:1 + Write-EventLog -LogName Security -source“msevent”-EntryType Information -Event ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:PermissionDenied:(:) [Write-EventLog],Exception + FullyQualifiedErrorId:AccessDenied,Microsoft.PowerShell.Commands.WriteEventLogCommand
我是管理员,不知道为什么会发生这种情况,即使在尝试修改注册表安全权限之后也是如此。
有谁知道我该怎么做?
答案 0 :(得分:2)
MS文档:
只有本地安全机构(Lsass.exe)具有写入权限 安全日志。没有其他帐户可以请求此权限。至 将事件写入安全日志,使用AuthzReportSecurityEvent 功能
这是指向文档的链接:Event Logging Security
这里还有一个链接,涵盖从powershell访问Win API,如果您必须使用安全日志,这应该有助于实现:Use PowerShell to Interact with the Windows API: Part 1
我很遗憾没有提供完整的例子,但由于时间限制,现在必须这样做。
此致
答案 1 :(得分:0)
已升级的进程可以使用AuthzReportSecurityEvent function写入安全事件日志。
Vanara项目为此API提供了.NET互操作包装器,并且可以作为Nuget package供.NET开发人员使用。这可能是创建可通过PowerShell使用的东西的良好起点。