我正在尝试查看路径中的所有文件,包括网络共享上的所有子文件夹。我要在文件中查找特定的字符串。字符串在$searchPattern中设置,起始目录在$path下。
我知道至少有一个结果是它应该找到的,但它没有返回任何结果。搜索字符串必须包含换行符,所以我将其包含在变量中。我在寻求帮助,为什么我可能得不到我想要的东西?我对PS1脚本编程比较陌生。
不管它有什么价值,我认为它与换行符有关。当我从searchPattern变量中删除`n时,我确实得到了结果...但我想要完成的是找到没有打印机设置的任何记录,下面提供了一个示例。
谢谢!
$path = '\\printershare\printers\'
$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
发布于 2018-07-17 03:44:54
当您在一组类似的文件上使用Select-String时,它实质上是获取每个文件,并将该文件的行拆分为一个数组。然后,它查看每一行并将其与正则表达式模式进行比较。在这种情况下:
^label_printer=$
^
表示要查看的字符串的开头。
label_printer=
表示查找指定的文字字符串。
$
表示要查看的字符串的末尾。
由于Select-String有效地拆分了回车上的文件,因此您正在查看的字符串中没有一个回车与之匹配。
https://stackoverflow.com/questions/51368011
复制相似问题