J'ai des fichiers texte qui contiennent des tâches d'exécution sur Windows Scheduler, j'essaie de lire une valeur spécifique à partir de ces fichiers et d'envoyer un courrier électronique,
par exemple: file_1.txt code> a ci-dessous les lignes et si le nombre rejeté est supérieur à 0000000000 code>, nous devrions être notifiés. P> $Output = Get-Content "C:\Powershell\Logs\*.log" |Select -Index 22
$output
$output = Select-String -Path 'C:\Powershell\Logs\*.log' -Pattern 'REJECTED:'
3 Réponses :
Cela rend beaucoup d'hypothèses sur le contenu de vos fichiers, de sorte que cela ne fonctionne pas, vous devrez peut-être mettre à jour votre question avec plus de détails:
rejected count = 1
Ce n'est pas le plus joli code ... En fait, ce n'est même pas du code que je suis content de ... mais cela fonctionne et l'intention est que cela fonctionne de manière compréhensible pour vous!
Whirl et voir comment vous obtenez sur : -) code> p>
Ceci obtient le nombre rejeté en utilisant la façon dont POSH gère sortie ... p> -Match code> lorsque l'objet à gauche est une collection. Vous obtenez l'article, pas un booléen.
Est-ce le fichier entier?
Il y a plus de données à cela, c'est les données que je m'intéresse.
Ah! Je pense que votre utilisation de
-index code> était significative. Comme ce n'est pas une partie nécessaire du processus de sélection, je l'ignorerai. Il existe des moyens plus rapides et de meilleure qualité d'obtenir le 21ème article d'un tableau ... [ Grin I>]Le Select -index doit fonctionner avec un fichier si c'est la bonne ligne. La première ligne est la ligne 0. Select-String renvoie un objet MatchInfo. Vous voudrez peut-être quelque chose comme
$ sortie = (Select-String -Path 'c: \ PowerShell \ journaux \ *. Journal' -Pattern 'Rejeté:') chaîne réelle.