Powershell if语句在管道中

Mar*_*aev 3 powershell command-line

我需要创建一个可以连续读取文件的脚本,如果有一行带有文本,则调用一个函数.

我正在想办法用一条线来做这件事

Get-Content -Path $logFile -wait | ?{$_-match "$filter"}
Run Code Online (Sandbox Code Playgroud)

但如果线路确实符合标准,我不知道如何调用函数.

那可行吗?或者我应该像循环一样在每个周期读取文件,如果有匹配退出循环?

Col*_*350 7

将它传递给foreach循环,它将分别遍历每一行,您可以将if语句放在循环中:

Get-Content -Path $logFile -wait | %{if($_ -match "$filter"){Callfunction}}
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望在ForEach循环之前进行过滤.`gc $ logfile -wait |?{$ _ -match"$ filter"} |%{callfunction $ _}`...另外,如果他的答案解决了问题,请将其标记为已接受的答案,以便他获得荣誉. (3认同)