首页 > 解决方案 > 将 2 个 Powershell 脚本合二为一

问题描述

我有两个 Powershell 脚本在我的 PC 上同时运行,做着类似的工作。每个人都在日志文件中查找刺痛模式,然后将文本字符串写入文本文件。这会动态更新,因此每次日志文件中的字符串更改时,都会在输出文本文件中更新。一切都很好。

我想将这两个脚本合并到一个 Powershell 脚本中,以提高效率。希望这是有道理的。下面是其中一个 Powershell 脚本的示例。除了 $output 文件名不同且 $patterns 不同之外,这两个脚本都是相同的。我希望每个字符串都进入一个 csv 文件。

 $log = "LogFile.txt"
 $output = "ExampleOutput.txt"

 $patterns = @("GroupEvents: Linedup for group (.*), subgroup", 
               "Workout(.*)", 
               "GroupEvents: Started in group (.*), subgroup", 
               "Run Device Selected: (.*)")

 function ProcessLog {
     [CmdletBinding()] Param([Parameter(ValueFromPipeline)]$item)

     Write-Output "Running with $item"

     foreach($pattern in $patterns)
     {
         $save = (Select-String -InputObject $item -Pattern $pattern | % { 
 $_.Matches.Groups[1].Value })

         if(-not [string]::IsNullOrWhitespace($save))
         {
             $save.Trim('(').Trim(')') | Set-Content $output
             return
         }
     }
 }

 Get-Content -Tail 0 -Wait -Encoding "UTF8" $log | % { $_ | ProcessLog }

我意识到这可能不像听起来那么简单,欢迎任何其他想法。也许每个单独的字符串都可以写入逗号分隔的 csv 中的不同选项卡

标签: powershell

解决方案


推荐阅读