Ich versuche, neue Zeilen, die zu einer Protokolldatei hinzugefügt wurden, zu straffen, wenn sie ein bestimmtes Wort enthalten - siehe "Slack", wenn ich Fehler habe.Powershell Neue Zeilen an Slack senden
Was ich gehofft funktionieren würde, ist:
$message = Get-Content '\\path\to\file.log' -Wait -Tail 0 | Select-String -Pattern 'ERROR'
foreach($line in $message) { Send-SlackMsg -Text "$($line)" -Channel $channel }
Leider nicht. Ich habe Send-SlackMsg durch Write-Host ersetzt, nur um zu sehen, ob das das Problem ist, aber nicht.
Get-Content '\\path\to\file.log' -Wait -Tail 0 | Select-String -Pattern 'ERROR'
Funktioniert wie ein Charme in meiner Konsole.
Wie kann ich PowerShell veranlassen, eine Aktion auszuführen, wenn eine neue Zeile angezeigt wird und mit dem Muster übereinstimmt?
Verwenden Sie '| ForEach-Object {...}' nach 'Select-String' anstelle von' $ message' - sonst wird die erste Zeile wegen des '-Wait'-Schalters –
And immer blockieren Was ist die Var, die die neue Linie darstellt? $ line hat nicht funktioniert. –
Mit einem 'ForEach-Object' wird das aktuelle Element in der Pipeline durch' $ _' dargestellt. –