PowerShell写入事件日志

      可能大家都知道,在PowerShell中使用“Get-Eventlog”命令可以查询Windows系统中的事件日志,如常见的应用程序、系统以及安全日志。但有的时候我们可能又需要将一些关键信息输出到事件日志中,我们就可以使用System.Diagnostics.EventLog类,不仅可以将信息写入到传统事件日志(即系统、应用程序,以及安全)中;还可以创建自己的事件日志,并将日志写入其中。

  在写入事件日志之前,必须创建来源,通过来源可以很快的定位该事件的源头,如下图1所示。创建事件来源后,还需要将其与事件日志名称进行关联,然后再写入特定的信息。同一个事件源只能被写入到一种事件日志中,如写入到应用程序日志中后,就不能再被写入到安全或系统日志中了。

  使用如下代码可以创建时间来源“powershell_script”,并使之与应用程序(Application)日志关联。

#定义事件源,定义事件日志类别

$Eventlog_source = "powershell_script"

$Eventlog_log = "Application"

#创建事件日志来源并使之与事件日志类别关联

[system.diagnostics.eventlog]::CreateEventSource($Eventlog_source,$Eventlog_log)

 

  然后就需要使用“New-Object”命令将信息写入到事件日志中,代码如下:

$Applog = New-Object system.diagnostics.eventlog($Eventlog_log,".")

$Applog.source = $Eventlog_source

$Event_test = "PS Test for powershell to write."

$Applog.writeEntry($Event_test)

 

  之上输出的事件日志默认级别为“Information”,除此之外还有“Error”、“Warning”、“ SuccessAudit”和“FailureAudit”几种级别。

使用如下代码可以将其设置为警告。

$Applog.writeEntry($Event_test,"Warning")

  如果需要设置事件ID为25,则代码如下:

$Applog.writeEntry($Event_test,"Warning",25)

   

  例:新建事件日志来源为“ps_script”,新建事件日志类别“MyApp”,将信息输出到MyApp下,日志级别为“警告”,事件ID为32。

  完整的代码参考如下:

#定义事件源,定义事件日志类别

$Eventlog_source = "ps_script"

$Eventlog_log = "MyApp"   #自定义新的事件日志类别

 

#如果事件来源不存在,则创建该来源和相对应的事件日志。就是在把事件源和事件日志类别相关联,关联后该事件源就不能再写入到其他类别的事件日志类中

#如果已存在,则将其删除

If(![system.diagnostics.eventlog]::sourceExists($Eventlog_source))

{

[system.diagnostics.eventlog]::CreateEventSource($Eventlog_source,$Eventlog_log)

}

Else

{

 Write-Host "$Eventlog_source is already registered with another Eventlog."

Exit

}

 

#新建事件日志MyApp,指定事件日志来源为$Eventlog_log,"."代表本机;将变量$ Event_test中的内容写入到MyApp事件日志下

$Applog = New-Object system.diagnostics.eventlog($Eventlog_log,".")

#Remove-Eventlog $log  #删除已存在的事件日志$log

$Applog.source = $Eventlog_source

$Event_test = PS Test for powershell to write."

$Applog.writeEntry($Event_test,"Warning",32) #此处可以定义为Information,Warning,Error,SuccessAudit,FailureAudit类型,事件ID为32,也可以不设置

posted on 2013-03-05 19:33  momingliu11  阅读(3232)  评论(0编辑  收藏  举报