PowerShell:如何在递归数据搜索中摆脱输出行

时间:2016-02-21 10:51:53

标签: powershell

我有100个.sql文件,我想检查字符串"Das ist ein Test"是否包含在此文件中。

到目前为止,我只找到了Select-String cmdlet。但是,这只给了我找到String的文件。

这是我的PowerhShell脚本:

$path = "F:\Masterarbeit\Daten\"
$search = "Das ist ein Test"

Get-ChildItem $path -Filter *.sql -Recurse | Select-String -Pattern $search -casesensitive | select FileName

exit

这是我得到的输出:

PowerShell Output

我现在如何更改我的代码,以便我只获取不包含字符串的文件名?我也知道有一个名为-NotMatch的参数,但不幸的是它只返回找不到该字符串的所有行。

2 个答案:

答案 0 :(得分:0)

现在您正在检查每个文件的每一行。你想要的是检查每个文件(如果它包含字符串)。

System.ComponentModel.Win32Exception: Access is denied

答案 1 :(得分:0)

我会把你所拥有的东西包裹起来,并Select-String阻止Where-object块与-not运算符。

Get-ChildItem $path -Filter *.sql -Recurse |
#Only keep files that don't return a match
Where-Object { -not (Select-String -Path $_.FullName -Pattern $search -casesensitive) } |
Select-Object Name