Aller au contenu

POWERSHELL : Script de monitoring de fichier par « keyword »

$keyword = "erreur"
$log_file = 'C:\mic\monfichier.log'

# Connection à la base de données
$connectionString = "Data Source=localhost;Initial Catalog=logs;User ID=username;Password=password"
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()

# Ouvrir le fichier journal en lecture seule
$log_file_handle = [System.IO.File]::OpenText($log_file)

# Lire toutes les lignes du journal
while($log_line = $log_file_handle.ReadLine()) {
    if ($log_line -match $keyword) {
        # Le mot-clé a été trouvé dans la ligne, vérifier si la ligne a déjà été traitée
        $query = "SELECT COUNT(*) FROM processed_logs WHERE log_line = @log_line"
        $cmd = New-Object System.Data.SqlClient.SqlCommand($query,$connection)
        $cmd.Parameters.Add("@log_line",[System.Data.SqlDbType]::NVarChar)
        $cmd.Parameters["@log_line"].Value = $log_line
        $count = $cmd.ExecuteScalar()
        if ($count -eq 0) {
            # La ligne n'a pas encore été traitée, créer un événement
            createEvent $log_line
            # Enregistrer la ligne dans la base de données pour éviter de la traiter à nouveau
            $query = "INSERT INTO processed_logs (log_line) VALUES (@log_line)"
            $cmd = New-Object System.Data.SqlClient.SqlCommand($query,$connection)
            $cmd.Parameters
Étiquettes:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *