在powershell搜索中未获得预期结果



我正在尝试查看路径中的所有文件,包括网络共享上的任何子文件夹。我正在文件中查找特定的字符串。字符串设置在$searchPattern中,起始目录位于$path下。

我知道它至少应该找到一个结果,但没有返回任何结果。搜索字符串必须包含换行符,所以我将其包含在变量中。我正在寻求帮助,为什么我可能得不到我所期望的?我对PS1脚本还比较陌生。

就其价值而言,我认为这与换行符有关。当我从searchPattern变量中删除`n时,我确实会返回结果。。。但我想做的是找到任何没有打印机设置的记录,下面包括一个示例。

谢谢!

$path = '\printershareprinters'
$searchPattern = 'label_printer=`n' 
# note the newline char at the end of the pattern
Get-ChildItem $path -recurse | Select-String -pattern $searchPattern | group path | select name

包含我正在查找的内容的示例文件。此文件没有设置标签打印机。

[Printers]
local_printer=printer001
local_pharm_printer=printer001
label_printer=
local_nursing_printer=printer001
hosp_pharm_printer=printer001
hosp_nursing_printer=printer001

当您在一组文件上使用SelectString时,它本质上是获取每个文件并将该文件的行拆分为一个数组。然后,它查看每一行,并将其与正则表达式模式进行比较。在这种情况下:

^label_printer=$

^表示正在查看的字符串的开头。

label_printer=表示查找所指示的文字字符串。

$表示正在查看的字符串的末尾。

由于SelectString有效地分割了回车上的文件,所以您所查看的字符串中没有一个包含要匹配的回车。

最新更新