surveiller un fichier journal avec Get-Content -attendre jusqu'à la fin de la journée
J'ai un script de contrôle d'un fichier journal avec get-Content et il attend pour de nouvelles lignes écrites de sorte qu'il peut détecter le changement. L'enregistreur permet de changer le nom du fichier journal tous les jours pour le rendre System_$date.journal.
Je suis en train de faire mon Get-Content d'attendre de nouvelles lignes, comme le break quand le changement de la date à exécuter lui-même avec la nouvelle date dans le nom de fichier. Quelqu'un a une idée de comment cela pourrait être fait?
Grâce
Modifier
Le script ressemble à ceci:
Get-Content System_201371.log -wait | where {$_ -match "some regex"} |
foreach {
send_email($_)
}
Le nom de fichier qui est System_201371 change tous les jours, il sera System_201372 et ainsi de suite, Aussi ce script s'exécute en tant que service, j'ai besoin de casser et de ré-exécuter lui-même avec un nouveau nom de fichier
OriginalL'auteur laitha0 | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les Travaux pour cette. Lire le fichier d'une certaine tâche en arrière-plan, et de laisser le "premier plan" script attendre jusqu'à ce que le jour a changé. Une fois la journée a changé, de tuer l'ancien emploi et en commencer une nouvelle en regardant dans le nouveau fichier.
Le code ci-dessus devrait fonctionner indéfiniment, et automatiquement de faire la bonne chose que chaque nouvelle journée commence. Le
Get-Content
morceau est en cours d'exécution en tâche d'arrière-plan, de sorte que l'ensemble du script ne sont pas rester "coincé." Vous devriez être en mesure de définir ce qu'un "au démarrage" genre de chose.Ah je vois, eh bien j'ai trouvé une option dans le "scheduler" qui, en gros, tue le processus existant et en créer un nouveau. Si cela ne résout pas le problème des Mauvais travail avec votre version qui est beaucoup plus propre de toute façon. Est-ce ce qu'il fait exécuter une tâche en arrière-plan "$dernier = Start-Job -Arg $fullPath -ScriptBlock {" ??
Oui, c'est correct.
Emplois exécuter en arrière-plan, et de ne pas imprimer les résultats de la console actuelle. Si vous souhaitez accéder aux résultats d'un travail achevé, vous devez utiliser le
Receive-Job
applet de commande. Essayez$latest | Wait-Job | Receive-Job
. Si vous avez d'autres questions de suivi, il serait sans doute préférable de lui demander comme plein de questions au lieu de l'étendre ce fil de commentaires, puisque ce n'est pas vraiment ce que les commentaires sont destinés pour. 🙂OriginalL'auteur latkin
Cela, il faut toujours surveiller aujourd'hui du journal et de détecter le changement de date:
Me semble que si ce paramètre est manquant également, $Currentlog est nulle à l'intérieur du bloc de script
OriginalL'auteur Graham Gold