查找具有特定事件日志的服务器

查找具有特定事件日志的服务器

我有一项任务需要我更新 Windows 服务。此服务可能有不同的名称 - 它在安装服务时要求安装名称...但 Windows 事件日志在 C# 中被硬编码为特定名称:

if (!EventLog.SourceExists("MySuperSpecialEventLog"))
    EventLog.CreateEventSource("MySuperSpecialEventLog", "MyLog");

如何找到所有记录到此自定义日志中的事件的服务器?

我一直在玩 Powershell:

clear

import-module ActiveDirectory;
$servers = Get-ADComputer -Filter {OperatingSystem -Like "Windows Server*"} -Property Name | Sort-Object name | Format-Table Name; #,OperatingSystem,OperatingSystemServicePack;
$servers

foreach($server in $servers){
   echo "Get-Eventlog -List -ComputerName $server"
}

这给了我一个服务器列表...然后我尝试提取每个服务器的服务列表...然后我就可以进行过滤...

但我似乎无法让所有气缸都点击它。

如果 powershell 不是正确的工具-还有什么可以找到具有该特定 EventLog 的所有服务器?

答案1

$source = "MySuperSpecialEventLog"
import-module ActiveDirectory
$servers = Get-ADComputer -Filter {OperatingSystem -Like "Windows Server*"} | % { $_.Name }

$servers | % {
    Try {
        $eventlog = get-eventlog -Source $source -ComputerName $_ -newest 1 -ErrorAction Stop
        Write-Host $_ , ":", "has $source entries" 
    } Catch {
        Write-Host $_ , ":", $_.Exception.Message
    }
}

这会呼应computer : has MySuperSpecialEventLog entriescomputer : exceptionmessage

相关内容