Powershell:通过管道获取内容 - 等待对象数组并重绘显示 table

Powershell: Piping Get-Content -wait to an array of objects and redraw display table

我有一个使用

跟踪日志文件的 Powershell 脚本
Get-Content $logFile -wait | ForEach  { if ($_.Contains("[OK]")){ Write-Host -ForegroundColor Green $_ } elseif ($_.Contains("[FAIL]")){ Write-Host -ForegroundColor Red $_ } elseif ($_.Contains("[INFO]")){ Write-Host -ForegroundColor Yellow $_ } else { Write-Host $_ } } 

此日志文件包含的行绝不会超过 100 行,这些行都与其中一个应用程序有关。 15 项服务。现在我只是使用上面的日志文件尾部将这 100 行输出到屏幕上。

但我真正想做的是只显示 15 行的 table,并在我从日志中获取新行时不断更新 table 以显示新信息从日志中获取。

我曾尝试搜索显示 table 的示例,但找不到任何示例。是否有可能,如果有可能,那么我将不胜感激 link 以提供有关它的一些信息。

每次收到消息时,您都可以创建一个对象并将其保存到数组中。要重新输出 table,您需要像以前一样逐行显示它,或者每次都清除主机并输出整个对象。

$log = @()
Get-Content $logFile -wait |
    ForEach-Object {
    switch ($_) {
        {$_.Contains("[OK]")} {
            $logentry = [pscustomobject]@{
                'Status'  = 'Success'
                'Message' = ($_ -split '\[OK\]')[-1]
            }
            $log += $logentry
        }
        {$_.Contains("[FAIL]")} {
            $logentry = [pscustomobject]@{
                'Status'  = 'Failure'
                'Message' = ($_ -split '\[FAIL\]')[-1]
            }
            $log += $logentry
        }
        {$_.Contains("[INFO]")} {
            $logentry = [pscustomobject]@{
                'Status'  = 'Info'
                'Message' = ($_ -split '\[INFO\]')[-1]
            }
            $log += $logentry
        }
        default {
            $logentry = [pscustomobject]@{
                'Status'  = 'Unknown'
                'Message' = $_
            }
            $log += $logentry
        }
    }
    Clear-Host
    foreach ($logentry in $log) {
        switch ($logentry.Status) {
            'Success' { Write-Host -ForegroundColor Green $logentry }
            'Failure' { Write-Host -ForegroundColor Red $logentry }
            'Info' { Write-Host -ForegroundColor Yellow $logentry }
            default { Write-Host $logentry }
        }
    }
}

$log | Export-CSV C:\Example\path.csv -NoTypeInformation