Trouver des serveurs avec des journaux d'événements spécifiques


0

J'ai une tâche qui nécessite de mettre à jour un service Windows. Ce service peut être sous différents noms - il demande le nom d'installation lors de l'installation du service ... mais les journaux des événements Windows sont codés en dur sous un nom spécifique en C #:

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

Comment trouver tous les serveurs avec des événements consignés dans ce journal personnalisé?

J'ai joué avec 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"
}

Cela me donne une liste de serveurs ... alors j'essaie de tirer une liste de serveur Services ForEach ... alors je peux simplement filtrer ...

Mais je n'arrive pas à faire en sorte que la chose clique sur tous les cylindres.

Si powershell n’est pas le bon outil - quoi d’autre permettrait de trouver tous les serveurs dotés de cet EventLog spécifique?


votre foreach devrait être foreach($server in $servers)
LotPings

oui, c'était une erreur de traduction ... c'est ce qui se passe dans le foreach qui m'a confusqué
WernerCD

Que recherchez vous exactement? Vous avez parlé des journaux d'événements (MyLog) et des sources de journaux d'événements (MySuperSpecialEventLog). Vous dites ensuite que vous essayez d'extraire une liste de services de chaque serveur.
Patrick Seymour

Réponses:


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

Cela ferait écho computer : has MySuperSpecialEventLog entries ou computer : exceptionmessage

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.