# Importer l'assembly nécessaire pour les boîtes de dialogue Add-Type -AssemblyName System.Windows.Forms # Créer une boîte de dialogue pour afficher les messages $form = New-Object System.Windows.Forms.Form $form.Text = "Progression du Script" $form.Size = New-Object System.Drawing.Size(400,300) $form.StartPosition = "CenterScreen" $form.Topmost = $true # Créer une zone de texte pour afficher les messages $textbox = New-Object System.Windows.Forms.TextBox $textbox.Multiline = $true $textbox.ScrollBars = "Vertical" $textbox.Location = New-Object System.Drawing.Point(10,10) $textbox.Size = New-Object System.Drawing.Size(380,230) $textbox.ReadOnly = $true $form.Controls.Add($textbox) # Afficher la boîte de dialogue $form.Show() # Fonction pour ajouter un message à la zone de texte de la boîte de dialogue function Add-Message { param ( [string]$Message ) $textbox.AppendText("$Message`r`n") $textbox.ScrollToCaret() } # Début du programme Add-Message -Message "ETAPE 1/4 : CONNEXION INTERNET" Add-Message -Message "------------------------------" Add-Message -Message "" Add-Message -Message "Vérification de la connexion Internet..." $testDomain = "telebocal.org" try { $result = [System.Net.Dns]::GetHostAddresses($testDomain) Add-Message -Message "La connexion Internet est active." } catch { Add-Message -Message "ERREUR : La connexion Internet n'est pas active. Vérifier la connexion internet du PC et relancer le programme." Pause $form.Close() exit } Add-Message -Message "" Add-Message -Message "ETAPE 2/4 : MISE A JOUR DE l'INDEX DES CHEMINS" Add-Message -Message "----------------------------------------------" Add-Message -Message "" # Le reste de votre script continuera ici si la connexion Internet est active. # ... # Etape 2... Add-Message -Message "Mise à jour de l'index OK" Add-Message -Message "" Add-Message -Message "ETAPE 3/4 : MISE A JOUR DES LOGS" Add-Message -Message "--------------------------------" Add-Message -Message "" $userName = $env:USERNAME $source = "B:\log" $destination = "C:\Users\$userName\Desktop\LOG et SCAM\logs" $count = 0 Add-Message -Message "Récupération et mise à jour des logs en cours..." # Copier les fichiers .txt de la source vers la destination s'ils sont nouveaux ou modifiés Get-ChildItem $source -Filter *.txt -Recurse | ForEach-Object { if (!(Test-Path -Path "$destination\$_")) { Copy-Item $_.FullName -Destination $destination $count++ } elseif ((Get-Item $_.FullName).LastWriteTime -gt (Get-Item "$destination\$_").LastWriteTime) { Copy-Item $_.FullName -Destination $destination -Force $count++ } } $totalFiles = (Get-ChildItem $destination -Filter *.txt).Count if ($totalFiles -gt 700) { $filesToDelete = $totalFiles - 700 if ($filesToDelete -gt 0) { Get-ChildItem $destination -Filter *.txt | Sort-Object LastWriteTime | Select-Object -First $filesToDelete | Remove-Item -Force } } Add-Message -Message "" Add-Message -Message "Nombre de fichiers logs copiés : $count" Add-Message -Message "Mise à jour des LOGS OK" Add-Message -Message "" Add-Message -Message "ETAPE 4/4 CREATION DU FICHIER DIFFUSION" Add-Message -Message "---------------------------------------" Add-Message -Message "" Add-Message -Message "Création du fichier diffusion en cours..." $userName = $env:USERNAME $diffusioncsv = "C:\Users\$userName\Desktop\LOG et SCAM\diffusion.csv" $logFile = "C:\Users\$userName\Desktop\LOG et SCAM\logs\*.txt" $outputFile = "$diffusioncsv" if (Test-Path $outputFile) { Remove-Item $outputFile } $results = Get-Content $logFile | ForEach-Object { $line = $_ if ($line -match "(\d{4})-(\d{2})-(\d{2})\s(\d{2}):(\d{2}):(\d{2}).*CLIP START\s+(.*)") { $date = "{0}/{1}/{2}" -f $Matches[3], $Matches[2], $Matches[1] $time = $Matches[4] + ":" + $Matches[5] + ":" + $Matches[6] $clipName = $Matches[7].Split("(")[0].Trim() "{0};{1};{2}" -f $date, $time, $clipName } } "Date;Time;ClipName" | Out-File -FilePath $outputFile -Encoding default $results | Out-File -FilePath $outputFile -Encoding default -Append Add-Message -Message "Création du fichier diffusion OK" Add-Message -Message "" # Réduire toutes les fenêtres de commande ouvertes dans la session Windows Add-Type -AssemblyName Microsoft.VisualBasic $shell = New-Object -ComObject Shell.Application $shell.MinimizeAll() # Fermer la boîte de dialogue à la fin de l'exécution du script $form.Close()