我正在尝试编写一个PowerShell脚本,如果该文件包含字符串“ string 1”并且它不包含,则将检索文件。我编写了以下脚本,但是它正在检索包含这两个字符串的文件。
get-childitem -recurse -file D:\Folder |
where {
Get-Content $_.FullName | Where-Object { $_ -match "string 1" -and $_-notmatch "string 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