Question
[Résolu] Journal d'application par mail
- Spywolf
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 9 ans 4 mois #22553
par Spywolf
[Résolu] Journal d'application par mail a été créé par Spywolf
Bonjour,
Je voudrais récupérer certains journaux d'application Windows, et je rencontre quelques difficultés avec la génération du titre dans lequel je voudrais intégrer la notion de succès ou d'échec
Mon fichier *.bat actuellement est :
[code:1]function sendMail{
Write-Host \"Sending Email\"
#SMTP server name
$smtpServer = \"SMTP\"
#Creating a Mail object
$msg = new-object Net.Mail.MailMessage
$texte = Get-EventLog Application | Where-Object {$_.EventID -eq 11707}
#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = \"MAIL\"
$msg.To.Add(\"MAIL\"«»)
$msg.subject = $titre.Message
$msg.Body = $texte.Message
#Sending email
$smtp.Send($msg)
}
function generate_file{
# requete pour générer l'objet
$titre = \"Titre\"
}
function generate_file{
# requete pour récupérer le journal d'évènement
# et enregistrer le fichier
$texte = Get-EventLog Application | Where-Object {$_.EventID -eq 11707}
}
#Calling function
generate_file
sendMail[/code:1]
Il semblerait que ma compréhension du $texte modifié en $titre pour ne pas faire de doublon soit quelque peu eronnée...
Comment puis je faire ? Merci d'avance pour votre aide
<br><br>Message édité par: Spywolf, à: 3/11/16 18:03
Je voudrais récupérer certains journaux d'application Windows, et je rencontre quelques difficultés avec la génération du titre dans lequel je voudrais intégrer la notion de succès ou d'échec
Mon fichier *.bat actuellement est :
[code:1]function sendMail{
Write-Host \"Sending Email\"
#SMTP server name
$smtpServer = \"SMTP\"
#Creating a Mail object
$msg = new-object Net.Mail.MailMessage
$texte = Get-EventLog Application | Where-Object {$_.EventID -eq 11707}
#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = \"MAIL\"
$msg.To.Add(\"MAIL\"«»)
$msg.subject = $titre.Message
$msg.Body = $texte.Message
#Sending email
$smtp.Send($msg)
}
function generate_file{
# requete pour générer l'objet
$titre = \"Titre\"
}
function generate_file{
# requete pour récupérer le journal d'évènement
# et enregistrer le fichier
$texte = Get-EventLog Application | Where-Object {$_.EventID -eq 11707}
}
#Calling function
generate_file
sendMail[/code:1]
Il semblerait que ma compréhension du $texte modifié en $titre pour ne pas faire de doublon soit quelque peu eronnée...
Comment puis je faire ? Merci d'avance pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 4 mois #22554
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Journal d'application par mail
Salut,
Spywolf écrit:
Utilise la portée courante pour déclarer la variable Titre :
[code:1]
. generate_file
sendMail
[/code:1]
Mais auparavant renomme une des deux fonctions
Spywolf écrit:
Tuto Time !Comment puis je faire ?
Utilise la portée courante pour déclarer la variable Titre :
[code:1]
. generate_file
sendMail
[/code:1]
Mais auparavant renomme une des deux fonctions
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Spywolf
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 9 ans 4 mois #22555
par Spywolf
Réponse de Spywolf sur le sujet Re:Journal d'application par mail
Haha ! ca fonctionne merci 
Pour aller un peu plus loin, je voudrais que mon titre reprenne la notion de \"succes\" ou \"echec\" du log, et que mon corps reprenne la date et le message, mais je suis confronté à quelques nouveaux soucis ...
si j'ai plusieurs ID identiques, les données sont cumulées linéairement
[code:1] #Creating a Mail object
$msg = new-object Net.Mail.MailMessage
$titre = Get-EventLog Application 513
$texte = Get-EventLog Application 513[/code:1]
[code:1]
$msg.subject = $titre.entrytype
$msg.Body = $texte.timegenerated + $texte.message[/code:1]
[code:1]
function generate_title{
# requete pour récupérer le journal d'évènement et enregistrer le fichier
$titre = Get-EventLog Application 513
}
function generate_file{
# requete pour récupérer le journal d'évènement et enregistrer le fichier
$texte = Get-EventLog Application 513
}
#Calling function
generate_title
generate_file
sendMail[/code:1]
Plutôt que d'avoir toutes les heures a la suite puis tous les messages, je voudrais donc l'heure, le message, etc
J'ai testé
[code:1]
$msg.Body = $texte.timegenerated$texte.message
$msg.Body = $texte.timegenerated.message
$msg.Body = $texte.timegenerated $texte.message[/code:1]
mais aucune de ces syntaxes ne fonctionne ...
Pour simplifier le traitement, il faudrait que chaque mail soit limité à une ligne du journal
J'ai donc tenté
[code:1]
Get-EventLog Application -newest 1[/code:1]
mais visiblement cela prend en compte la dernière ligne du journal, et non la dernière ligne de l'ID concerné, de même avec
[code:1]
Get-EventLog Application -newest 1 | Where-Object {$_.EventID -eq 513}[/code:1]
qui ne fonctionne pas ...
Une idée ? ^^
Merci d'avance
<br><br>Message édité par: Spywolf, à: 27/10/16 09:06
Pour aller un peu plus loin, je voudrais que mon titre reprenne la notion de \"succes\" ou \"echec\" du log, et que mon corps reprenne la date et le message, mais je suis confronté à quelques nouveaux soucis ...
si j'ai plusieurs ID identiques, les données sont cumulées linéairement
[code:1] #Creating a Mail object
$msg = new-object Net.Mail.MailMessage
$titre = Get-EventLog Application 513
$texte = Get-EventLog Application 513[/code:1]
[code:1]
$msg.subject = $titre.entrytype
$msg.Body = $texte.timegenerated + $texte.message[/code:1]
[code:1]
function generate_title{
# requete pour récupérer le journal d'évènement et enregistrer le fichier
$titre = Get-EventLog Application 513
}
function generate_file{
# requete pour récupérer le journal d'évènement et enregistrer le fichier
$texte = Get-EventLog Application 513
}
#Calling function
generate_title
generate_file
sendMail[/code:1]
Plutôt que d'avoir toutes les heures a la suite puis tous les messages, je voudrais donc l'heure, le message, etc
J'ai testé
[code:1]
$msg.Body = $texte.timegenerated$texte.message
$msg.Body = $texte.timegenerated.message
$msg.Body = $texte.timegenerated $texte.message[/code:1]
mais aucune de ces syntaxes ne fonctionne ...
Pour simplifier le traitement, il faudrait que chaque mail soit limité à une ligne du journal
J'ai donc tenté
[code:1]
Get-EventLog Application -newest 1[/code:1]
mais visiblement cela prend en compte la dernière ligne du journal, et non la dernière ligne de l'ID concerné, de même avec
[code:1]
Get-EventLog Application -newest 1 | Where-Object {$_.EventID -eq 513}[/code:1]
qui ne fonctionne pas ...
Une idée ? ^^
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Spywolf
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 9 ans 4 mois #22558
par Spywolf
Réponse de Spywolf sur le sujet Re:Journal d'application par mail
Bonjour,
J'ai pu progresser sur le script et ajouter une condition qui permet de déclencher le mail et ne me donner de manière lisible les informations voulues.
Me reste par contre une grand problématique pour l'initialisation ...
Je voudrais que ce script soit exécuté à partir du moment ou une nouvelle entrée journal correspondant à mon ID est créée ... mais est ce que je peux / doit gérer ca via PowerShell (en sachant que je devrais l'utiliser en *.BAT) ?
Question subsidiaire, je n'ai trouvé des eventlog que pour les journaux Windows, alors que mon script doit s'adapter à un journal d'application et de services. Quelle commande dois-je utiliser ?
Merci d'avance pour vos réponses à ces 2 questions
Pour info, voila la forme du script actuel :
[code:1]if (Get-EventLog Application 11707 | Where-Object {$_.EntryType -ne \"success\"})
{
Function SendMail{
Write-Host \"Sending Email\"
#SMTP Server Name
$smtpServer = \"SMTP\"
#Creating a Mail Object
$msg = new-object Net.Mail.MailMessage
$titre = (Get-EventLog Application 1001)[0]
$texte = (Get-EventLog Application 1001)[0]
#Creating SMTP Server Object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = \"MAIL\"
$msg.To.Add(\"MAIL\"«»)
$msg.Subject = \"Journal \" + $titre.EntryType
$msg.Body = \"Date : \" + $texte.TimeGenerated + \"
Source : \" + $texte.Source + \"
Message : \" + $texte.Message
#Sending Email
$smtp.Send($msg)
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre = (Get-EventLog Application 1001)[0]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte = (Get-EventLog Application 1001)[0]
}
#Calling Function
Generate_Title
Generate_File
SendMail
}[/code:1]
Et pour gérer le multi lignes, j'ai opté pour le script suivant, mais n'est il pas possible de simplifier le nombre de lignes ?
[code:1]Function SendMail{
Write-Host \"Sending Email\"
#SMTP Server Name
$smtpServer = \"SMTP\"
#Creating a Mail Object
$msg = new-object Net.Mail.MailMessage
$titre = (Get-EventLog Application 1000)[0]
$texte = (Get-EventLog Application 1000)[0]
$titre1 = (Get-EventLog Application 1000)[1]
$texte1 = (Get-EventLog Application 1000)[1]
$titre2 = (Get-EventLog Application 1000)[2]
$texte2 = (Get-EventLog Application 1000)[2]
$titre3 = (Get-EventLog Application 1000)[3]
$texte3 = (Get-EventLog Application 1000)[3]
#Creating SMTP Server Object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = \"MAIL\"
$msg.To.Add(\"MAIL\"«»)
$msg.Subject = \"Journal \" + $titre.EntryType + \" / \" + $titre1.EntryType + \" / \" + $titre2.EntryType + \" / \" + $titre3.EntryType
$msg.Body = \"Date : \" + $texte.TimeGenerated + \"
Source : \" + $texte.Source + \"
Message : \" + $texte.Message + \"
***** ***** ***** \" + \"
Date : \" + $texte1.TimeGenerated + \"
Source : \" + $texte1.Source + \"
Message : \" + $texte1.Message + \"
***** ***** ***** \" + \"
Date : \" + $texte2.TimeGenerated + \"
Source : \" + $texte2.Source + \"
Message : \" + $texte2.Message + \"
***** ***** ***** \" + \"
Date : \" + $texte3.TimeGenerated + \"
Source : \" + $texte3.Source + \"
Message : \" + $texte3.Message
#Sending Email
$smtp.Send($msg)
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre = (Get-EventLog Application 1000)[0]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte = (Get-EventLog Application 1000)[0]
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre1 = (Get-EventLog Application 1000)[1]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte1 = (Get-EventLog Application 1000)[1]
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre2 = (Get-EventLog Application 1000)[2]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte2 = (Get-EventLog Application 1000)[2]
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre3 = (Get-EventLog Application 1000)[3]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte3 = (Get-EventLog Application 1000)[3]
}
#Calling Function
Generate_Title
Generate_File
SendMail[/code:1]
Merci pour votre aide
<br><br>Message édité par: Spywolf, à: 27/10/16 11:28
J'ai pu progresser sur le script et ajouter une condition qui permet de déclencher le mail et ne me donner de manière lisible les informations voulues.
Me reste par contre une grand problématique pour l'initialisation ...
Je voudrais que ce script soit exécuté à partir du moment ou une nouvelle entrée journal correspondant à mon ID est créée ... mais est ce que je peux / doit gérer ca via PowerShell (en sachant que je devrais l'utiliser en *.BAT) ?
Question subsidiaire, je n'ai trouvé des eventlog que pour les journaux Windows, alors que mon script doit s'adapter à un journal d'application et de services. Quelle commande dois-je utiliser ?
Merci d'avance pour vos réponses à ces 2 questions
Pour info, voila la forme du script actuel :
[code:1]if (Get-EventLog Application 11707 | Where-Object {$_.EntryType -ne \"success\"})
{
Function SendMail{
Write-Host \"Sending Email\"
#SMTP Server Name
$smtpServer = \"SMTP\"
#Creating a Mail Object
$msg = new-object Net.Mail.MailMessage
$titre = (Get-EventLog Application 1001)[0]
$texte = (Get-EventLog Application 1001)[0]
#Creating SMTP Server Object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = \"MAIL\"
$msg.To.Add(\"MAIL\"«»)
$msg.Subject = \"Journal \" + $titre.EntryType
$msg.Body = \"Date : \" + $texte.TimeGenerated + \"
Source : \" + $texte.Source + \"
Message : \" + $texte.Message
#Sending Email
$smtp.Send($msg)
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre = (Get-EventLog Application 1001)[0]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte = (Get-EventLog Application 1001)[0]
}
#Calling Function
Generate_Title
Generate_File
SendMail
}[/code:1]
Et pour gérer le multi lignes, j'ai opté pour le script suivant, mais n'est il pas possible de simplifier le nombre de lignes ?
[code:1]Function SendMail{
Write-Host \"Sending Email\"
#SMTP Server Name
$smtpServer = \"SMTP\"
#Creating a Mail Object
$msg = new-object Net.Mail.MailMessage
$titre = (Get-EventLog Application 1000)[0]
$texte = (Get-EventLog Application 1000)[0]
$titre1 = (Get-EventLog Application 1000)[1]
$texte1 = (Get-EventLog Application 1000)[1]
$titre2 = (Get-EventLog Application 1000)[2]
$texte2 = (Get-EventLog Application 1000)[2]
$titre3 = (Get-EventLog Application 1000)[3]
$texte3 = (Get-EventLog Application 1000)[3]
#Creating SMTP Server Object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = \"MAIL\"
$msg.To.Add(\"MAIL\"«»)
$msg.Subject = \"Journal \" + $titre.EntryType + \" / \" + $titre1.EntryType + \" / \" + $titre2.EntryType + \" / \" + $titre3.EntryType
$msg.Body = \"Date : \" + $texte.TimeGenerated + \"
Source : \" + $texte.Source + \"
Message : \" + $texte.Message + \"
***** ***** ***** \" + \"
Date : \" + $texte1.TimeGenerated + \"
Source : \" + $texte1.Source + \"
Message : \" + $texte1.Message + \"
***** ***** ***** \" + \"
Date : \" + $texte2.TimeGenerated + \"
Source : \" + $texte2.Source + \"
Message : \" + $texte2.Message + \"
***** ***** ***** \" + \"
Date : \" + $texte3.TimeGenerated + \"
Source : \" + $texte3.Source + \"
Message : \" + $texte3.Message
#Sending Email
$smtp.Send($msg)
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre = (Get-EventLog Application 1000)[0]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte = (Get-EventLog Application 1000)[0]
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre1 = (Get-EventLog Application 1000)[1]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte1 = (Get-EventLog Application 1000)[1]
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre2 = (Get-EventLog Application 1000)[2]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte2 = (Get-EventLog Application 1000)[2]
}
Function Generate_Title{
# requete pour extraire le journal : Type
$titre3 = (Get-EventLog Application 1000)[3]
}
Function Generate_File{
# requete pour extraire le journal : Date Source Message
$texte3 = (Get-EventLog Application 1000)[3]
}
#Calling Function
Generate_Title
Generate_File
SendMail[/code:1]
Merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 4 mois #22559
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Journal d'application par mail
Je ne répond qu'a la première question :
Spywolf écrit:
Spywolf écrit:
Quant au .bat pourquoi en utiliser un ? Quel est son rôle ?
Spywolf écrit:
Soit du fait du polling (interrogation régulière) soit tu utilises un événement d'un objet EventLog (déclenchement automatique sous réserve d'avoir un process/script/tâche WMI qui tourne en continu).Je voudrais que ce script soit exécuté à partir du moment ou une nouvelle entrée journal correspondant à mon ID est créée
Spywolf écrit:
De devoir le gérer c'est toi qui voit.mais est ce que je peux / doit gérer ca via PowerShell (en sachant que je devrais l'utiliser en *.BAT) ?
Quant au .bat pourquoi en utiliser un ? Quel est son rôle ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Spywolf
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 9 ans 4 mois #22561
par Spywolf
Réponse de Spywolf sur le sujet Re:Journal d'application par mail
J'avoue que je ne sais pas vraiment ... peut être est ce que je mélange un peu tout.
Le fait d'avoir un *.bat devrait me permettre d'automatiser l'exécution du script, mais il est peut être possible de faire autrement ?
L'objectif final est de faire remonter des alertes d'échec située dans le journal d'application et de services d'un logiciel de sauvegarde afin de les recevoir par mail.
Peut être est ce que je m'y prends mal depuis le départ ?
Qu'en est il de mes 2 autres questions du coup ? Tu n'as peut être pas la réponse ? Aurais-tu des pistes ou je pourrais pousser mes recherches avancées ?
Merci pour ton aide
Le fait d'avoir un *.bat devrait me permettre d'automatiser l'exécution du script, mais il est peut être possible de faire autrement ?
L'objectif final est de faire remonter des alertes d'échec située dans le journal d'application et de services d'un logiciel de sauvegarde afin de les recevoir par mail.
Peut être est ce que je m'y prends mal depuis le départ ?
Qu'en est il de mes 2 autres questions du coup ? Tu n'as peut être pas la réponse ? Aurais-tu des pistes ou je pourrais pousser mes recherches avancées ?
Merci pour ton aide
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.054 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Journal d'application par mail