Encuentra servidor (s) con registros de eventos específicos

0

Tengo una tarea que me obliga a actualizar un servicio de Windows. Este servicio podría tener nombres diferentes; solicita el nombre de instalación luego de la instalación del servicio ... pero los registros de eventos de Windows están codificados de manera rígida a un nombre específico en C #:

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

¿Cómo puedo encontrar todos los servidores con eventos registrados en este registro personalizado?

He estado jugando con 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"
}

Esto me da una lista de servidores ... luego estoy tratando de obtener una lista de servicios para cada servidor ... entonces puedo filtrar ...

Pero parece que no logro hacer clic en todos los cilindros.

Si powershell no es la herramienta adecuada, ¿qué otra cosa funcionaría para encontrar todos los servidores con ese EventLog específico?

WernerCD
fuente
tu foreach debe ser foreach($server in $servers)
LotPings
Sí, eso fue un error de traducción ... son las cosas en el foreach que me han confundido
WernerCD
¿Que es exactamente lo que está buscando? Mencionó los registros de eventos (MyLog) y las fuentes de registro de eventos (MySuperSpecialEventLog), luego dice que está intentando extraer una lista de servicios de cada servidor.
Patrick Seymour

Respuestas:

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
    }
}

Esto haría eco computer : has MySuperSpecialEventLog entries o computer : exceptionmessage

SimonS
fuente