PowerShell向Slack发送新行

时间:2017-07-13 12:18:47

标签: powershell

我试图将添加到日志文件中的新行发送到松散状态,如果他们中有一个单词 - 如果我有错误,请查看松弛。

我希望工作的是:

$message = Get-Content '\\path\to\file.log' -Wait -Tail 0 | Select-String -Pattern 'ERROR'

foreach($line in $message) { Send-SlackMsg -Text "$($line)" -Channel $channel }

可悲的是,事实并非如此。我已经用Write-Host取代了Send-SlackMsg,看看是不是问题,但事实并非如此。

Get-Content '\\path\to\file.log' -Wait -Tail 0 | Select-String -Pattern 'ERROR'

在我的控制台中像魅力一样工作。

如果出现新行并且它与模式匹配,我如何让PowerShell执行操作?

1 个答案:

答案 0 :(得分:2)

根据Mathias的评论,您可以使用ForEach-Object

Get-Content '\\path\to\file.log' -Wait -Tail 0 | Select-String -Pattern 'ERROR' | ForEach-Object { Send-SlackMsg -Text $_ -Channel $channel }

您的代码存在的问题是,由于-Wait切换,代码永远不会超过$message =行。但是ForEach-Object通过管道处理对象,因此只要将新行写入匹配“ERROR”的文件,它就会沿着管道向下传递到ForEach-Object