使用PowerShell在远程服务器上创建自定义事件日志

时间:2011-05-31 16:30:48

标签: .net logging powershell powershell-v2.0 powershell-remoting

我有一个要求,我需要在不同的服务器上创建自定义事件日志。我有命令在本地计算机上创建事件日志,但需要它用于远程服务器。在本地计算机上创建事件日志的命令是

powershell -command "if([System.Diagnostics.EventLog]::SourceExists('MySource')){Write 'Eventlog already exists'}else{[System.Diagnostics.EventLog]::CreateEventSource('MySource','MyCustomLog')}"

我希望远程服务器也一样。

请尽可能粘贴代码。

感谢。

2 个答案:

答案 0 :(得分:2)

来自你在Posh Comm上的帖子

Invoke-command -computername server,server -scriptblock {if([System.Diagnostics.EventLog]::SourceExists('MySource')){Write 'Eventlog already exists'}else{[System.Diagnostics.EventLog]::CreateEventSource('MySource','MyCustomLog')}}

或者Shay Levy更优雅:

New-EventLog -LogName application -Source MySource,MyCustomLog -ComputerName PC1 -ErrorAction SilentlyContinue 
Write-EventLog -LogName application -Source MySource -EntryType information -Message test -EventId 1234 -Computer PC1

答案 1 :(得分:0)

还有一个CreateEventSource有3个参数,其中最后一个是机器名。这样就可以了:

if([System.Diagnostics.EventLog]::SourceExists('MySource', 'MyMachine'))
{
  Write 'Eventlog already exists'
}
else
{
  [System.Diagnostics.EventLog]::CreateEventSource('MySource','MyCustomLog', 'MyMachine')
}

请注意,带有3个参数的方法已标记为过时。通过更多工作,您可以使用带EventSourceCreationData的变体,您也可以在其中指定机器名称。