写入Windows安全日志

时间:2014-10-28 14:45:45

标签: windows security powershell logging

我有一个脚本,当完成向用户运行它时,我需要将审计事件写入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

我是管理员,不知道为什么会发生这种情况,即使在尝试修改注册表安全权限之后也是如此。

有谁知道我该怎么做?

2 个答案:

答案 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使用的东西的良好起点。