【问题标题】:Powershell search by single and multiple keywordPowershell按单个和多个关键字搜索
【发布时间】:2014-10-30 09:44:30
【问题描述】:

下面的一些命令在使用 PowerShell 在 Windows 日志中查找特定关键字时不提供任何输出。

Get-WinEvent -FilterHashtable @{LogName="Application"} | Select-String "Information"

但是,如果我只运行Get-WinEvent -FilterHashtable @{LogName="Application"},则有很多带有信息关键字的条目。 Select-String -pattern "Information" 也不起作用。

理想情况下,我想在上述场景中搜索多个关键字。

【问题讨论】:

    标签: powershell powershell-2.0 powershell-3.0 powershell-ise


    【解决方案1】:

    你需要做的:

    Get-WinEvent -FilterHashtable @{LogName="Application"} | ? { $_.leveldisplayname -eq 'Information' }
    

    您正在寻找的Information 是对象的一个​​属性。 Get-WinEvent cmdlet 返回一个对象集合,因此您需要添加Where-Object? 来过滤LevelDisplayName 对象属性。

    回答您的新问题:

    leveldisplayname 将是信息、错误或警告。您可以添加其中任何一个或使用逻辑来组合它们。为了在消息中搜索关键字,使用正则表达式可能是最好的方法:

    Get-WinEvent -FilterHashtable @{LogName="Application"} | ? message -imatch "keyword1"
    

    要搜索多个关键字,您可以使用 OR | 运算符修改正则表达式:

    Get-WinEvent -FilterHashtable @{LogName="Application"} | ? message -imatch "keyword1|keyword2|foo|bar"
    

    如果您想搜索所有包含“foo”或“bar”的错误消息,您可以这样做;

    Get-WinEvent -FilterHashtable @{LogName="Application"} | ? { ($_.message -imatch "foo|bar") -and ($_.leveldisplayname -eq 'Error') }
    

    【讨论】:

    • 好的@arco444。我也如何在消息中搜索?以及如何搜索多个关键字?
    • @SanchitRasiya 消息中有多个关键字或多个显示级别(例如InformationError)?
    • Q#1 如何在 leveldisplayname 和 message 中搜索单个单词。 Q#2 如何在 leveldisplayname & message 中搜索多个关键字?
    • 更新了,有帮助吗?
    • 确实如此。非常感谢! :)
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 2011-09-14
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2019-07-05
    相关资源
    最近更新 更多