Powershell select-string 但有一个排除项

Powershell select-string but with an exclusion

Get-ChildItem "C:\users\admin\Desktop\docs\" -recurse | 
    Select-String "smtp" | 
    group path | 
    select name

它会在该文件夹中的所有文件中查找带有 SMTP 一词的文件,这很棒,但我想在该文件夹中查找具有 SMTP 但没有 PDF 一词的文件。

不知道如何让它做到这一点。

有什么想法吗?提前致谢,

尝试使用 -like-notlike:

Get-ChildItem "C:\users\admin\Desktop\docs" -recurse | where $_.FullName -like "*smtp*" -and $_.FullName -notlike "*pdf*"

您可以 "late filter" 来自 Select-String 的结果,方法是将过滤器应用于返回的 matchinfo 个对象的 .line 属性:

Get-ChildItem "C:\users\admin\Desktop\docs\" -recurse | 
    Select-String "smtp" | 
    Where { $_.line -notlike '*PDF*' } |
    group path | 
    select name