$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