Powershell获取符合特定条件的文件

时间:2018-11-15 16:38:30

标签: powershell scripting

我正在尝试编写一个PowerShell脚本,如果该文件包含字符串“ string 1”并且它不包含,则将检索文件。我编写了以下脚本,但是它正在检索包含这两个字符串的文件。

get-childitem  -recurse -file  D:\Folder | 
where { 
Get-Content $_.FullName | Where-Object { $_ -match "string 1" -and  $_-notmatch "string 2"}
}

如何获取符合此条件的文件?

2 个答案:

答案 0 :(得分:0)

您需要立即对整个文件进行第二次比较。我会使用Select-String

Get-ChildItem -Recurse -File -Path D:\Folder | Where-Object { 
    (Select-String -Path $_.FullName "string1") -and -not(Select-String -Path $_.FullName "string2")
}

答案 1 :(得分:0)

第一个解决方案(通过更改代码):

(Get-ChildItem "D:\Folder\*.*") |  Where-Object {(Get-Content $_.FullName) -match "string 1" -and  (Get-Content $_.FullName) -notmatch "string 2" } | select FullName

第二个解决方案(使用选择字符串):

(Get-ChildItem "D:\Folder\*.*") | Where-Object {(Select-String -Path $_.FullName -Pattern "string 1") -and -not(Select-String -Path $_.FullName -Pattern "string 2") }| select FullName