Powershell选择字符串,但带有排除项

Powershell选择字符串,但带有排除项,powershell,powershell-2.0,Powershell,Powershell 2.0,它会在该文件夹中的所有文件中查找SMTP这个词,这很好,但是我想查找该文件夹中包含SMTP但没有PDF这个词的文件 我想不出怎么让它这么做 有什么想法吗?提前感谢,尝试使用-like和-notlike: Get-ChildItem "C:\users\admin\Desktop\docs\" -recurse | Select-String "smtp" | group path | select name 通过将筛选器应用于返回的matchinfo对象的.lin

它会在该文件夹中的所有文件中查找SMTP这个词,这很好,但是我想查找该文件夹中包含SMTP但没有PDF这个词的文件

我想不出怎么让它这么做


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

尝试使用
-like
-notlike

Get-ChildItem "C:\users\admin\Desktop\docs\" -recurse | 
    Select-String "smtp" | 
    group path | 
    select name
通过将筛选器应用于返回的
matchinfo
对象的
.line
属性,可以“延迟筛选”来自
Select String
的结果:

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

您可以将这两个子句组合为
$.FullName-例如“*smtp*”-和$.FullName-notlike“*pdf*”
您要查找的是在同一行中包含“smtp”,但不包含“pdf”的文件,还是在同一文件中的任何位置包含“smtp”,但不包含“pdf”的文件?
Get-ChildItem "C:\users\admin\Desktop\docs\" -recurse | 
    Select-String "smtp" | 
    Where { $_.line -notlike '*PDF*' } |
    group path | 
    select name