Powershell-帮助.搜索并命名文件



我感谢的任何反馈或帮助

我遇到的问题是,我有一个文件夹,其中包含我当前使用的所有机器的日志文件。我有几个脚本可以在日志中搜索预定的字符串,我还有另一个脚本可以根据每个结果的计数生成报告。然而,另外,我希望它告诉每个字符串结果的机器名称。此外,如果未找到任何内容,则不显示任何内容。幸运的是,我已经用机器名为每个日志文件命名,希望如果它在日志中找到字符串,它只需要命名它所在的日志文件的标题。

有人能为这个脚本提供任何帮助吗?我尝试过使用GCI和if语句的各种脚本,但都无济于事。

谢谢!

$items = get-childitem "path-to-file" 

ForEach ($item in $items) 
{
if ($items -contains "SUCCESS") {
write-host $items.name
}
}

您应该使用Get-Content来查询文件内容。

foreach ($item in $items) {
    if ((get-content $item) -match "SUCCESS") {
        $item.name
    }
}

-contains不幸因其误导性名称而受到一些人的关注。它用于查找数组中的匹配元素。虽然$items是一个数组,但它不包含您期望的内容。由于您也在寻找每个字符串结果的机器名,如果您熟悉unix,我建议使用Select-String,它与grep类似。

Get-ChildItem "C:temp" -filter "*.log" | Select-String "SUCCESS" | Select-Object Path,Line

那里有一个你可能不需要的过滤器。如果目录仅包含有问题的文件,请删除。这会让你看到这样的东西。

Path                Line              
----                ----              
C:templogfile.log computer = success

匹配的文件名以及匹配的完整行。

最新更新