1 votes

Surveiller un certain dossier/fichier et envoyer une notification lorsqu'il dépasse une certaine taille

Tout d'abord, le contexte de ma question :

Il arrive qu'une application que nous utilisons se heurte à une boucle dans la journalisation, ce qui entraîne des fichiers de journalisation très volumineux (augmentant de 30 Mo par seconde). Comme nous n'avons pas accès à la source complète de l'application, nous ne pouvons pas résoudre le problème nous-mêmes. Nous devons désactiver manuellement le service de l'application pour supprimer le fichier journal et redémarrer l'application par la suite.

Ce qui nous aiderait vraiment :

Comme nous ne voulons pas vérifier nous-mêmes la taille du fichier journal toutes les quelques heures, nous avons pensé à un mécanisme automatisé qui ferait ce travail à notre place. C'est la raison pour laquelle je pose ma question :

Est-il possible de créer un fichier exécuté (par le planificateur de tâches toutes les heures ou en analysant le fichier/dossier 24 heures sur 24, 7 jours sur 7) qui indique la taille d'un dossier ou d'un fichier et envoie une notification (par exemple, un courrier électronique ou autre) lorsque le dossier/fichier dépasse une certaine taille (par exemple, 200 Mo).

Je suis totalement débutant en matière de PowerShell et de Batch-Files, c'est pourquoi je suis vraiment reconnaissant pour tout type de conseil et si possible une solution entièrement fournie et décrite.

1voto

Mark Mckelvie Points 71

En suivant les conseils de Seth dans la section des commentaires, j'ai créé le script en utilisant les méthodes énumérées - cela fonctionne bien pour moi :

$startFolder = "C:\softwarename\data\logs";

$totalSize = 0;

$colItems = Get-ChildItem $startFolder
foreach ($i in $colItems)
{
    $subFolderItems = Get-ChildItem $i.FullName -recurse -force | Where-Object {$_.PSIsContainer -eq $false} | Measure-Object -property Length -sum | Select-Object Sum
    $totalSize = $totalSize + $subFolderItems.sum / 1MB

}

$startFolder + " | " + "{0:N2}" -f ($totalSize) + " MB"

if($totalSize -gt 1000){

Send-MailMessage -to "testuser@test.com" -from "PowerShell <test@test.com>" -Subject "Test" -body "Message Message Message" -Credential "MailUser"

}

Dès que le dossier dépasse 1000 Mo (-gt 1000), un courriel est envoyé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X