Encontrar servidor (es) com logs de eventos específicos

0

Eu tenho uma tarefa que exige que eu atualize um serviço do Windows. Esse serviço pode estar sob nomes diferentes - ele solicita o nome da instalação na instalação do serviço ... mas os Logs de Eventos do Windows são codificados para um nome específico em C #:

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

Como posso encontrar todos os servidores com eventos registrados neste registro personalizado?

Eu andei brincando com o 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"
}

Isso me dá uma lista de servidores ... então eu estou tentando puxar uma lista do servidor Services ForEach ... então eu posso apenas filtrar ...

Mas não consigo fazer com que a coisa clique em todos os cilindros.

Se o powershell não é a ferramenta certa - o que mais funcionaria para encontrar todos os servidores com esse EventLog específico?

    
por WernerCD 21.12.2016 / 20:52

1 resposta

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

Isso faria eco de computer : has MySuperSpecialEventLog entries ou computer : exceptionmessage

    
por 22.12.2016 / 12:09