Nom du fichier : Analyse-Logs.ps1
# définir les dossiers de travail ;
$Source = "C:\TP-Powershell\02-Logs\Source"
$Exports = "C:\TP-Powershell\02-Logs\Exports"
$Journal = "C:\TP-Powershell\02-Logs\Journal"
# créer les dossiers nécessaires si besoin ;
# Si le dossier Source n'existe pas je le crée
if ((Test-Path $Source) -eq $False){
# J'entre dans ce if si Source n'existe pas
New-Item -Path $Source -ItemType Directory
}
# Si le dossier Exports n'existe pas je le crée
if ((Test-Path $Exports) -eq $False){
# J'entre dans ce if si Exports n'existe pas
New-Item -Path $Exports -ItemType Directory
}
# Si le dossier Journal n'existe pas je le crée
if ((Test-Path $Journal) -eq $False){
# J'entre dans ce if si Journal n'existe pas
New-Item -Path $Journal -ItemType Directory
}
# rechercher tous les fichiers .log dans Source ;
$Fichiers = Get-ChildItem -Path $Source -Filter "*.log"
# Initialiser le rapport et le journal
$Rapport = "$Exports\rapport.txt"
$Log = "$Journal\journal.log"
Set-Content -Path $Rapport -Value "Rapport d'analyse"
Set-Content -Path $Log -Value "Journal du $(Get-Date)"
# J'ai plusieurs fichiers, je dois faire une boucle (foreach)
foreach ($Fichier in $Fichiers) { # Pour chaque (foreach) fichier ($Fichier) dans (in) la liste des fichiers ($Fichiers)
# analyser ces fichiers et rechercher les lignes contenant ERROR, FAILED ou WARNING ;
$Resultat = Select-String -Path $Fichier -Pattern "ERROR","FAILED","WARNING"
# écrire les résultats dans un rapport texte ;
Add-Content -Path $Rapport -Value $Resultat
# écrire un journal d’exécution dans un autre fichier.
Add-Content -Path $Log -Value "Fichier $Fichier analysé le $(Get-Date)"
}