使用PowerShell-Pattern在多个文件上搜索多个值
团队——我有一段按设计工作的代码片段。它将扫描特定单词的文件夹层次结构中的所有文件,然后返回找到该单词的所有实例的文件的重复数据删除文件路径。
$properties = @(
'Path'
)
Get-ChildItem -Path Server_NameFolder_Name* -recurse |
Select-String -Pattern ‘Hello’ |
Select-Object $properties -Unique |
Export-Csv Server_NameFolder_NameFile_Name.csv -NoTypeInformation
我想
- 展开此代码以便能够一次搜索多个单词。因此,所有找到“你好”或“Hola”的情况......如果可能的话,可能还有一个完整的单词列表。
- 让代码不仅返回文件路径,还返回绊倒它的单词......如果两个单词都绊倒了它,那么同一路径的多行
我发现了一些关于使用以下方法进行多词搜索的文章:
where { $_ | Select-String -Pattern 'Hello' } |
where { $_ | Select-String -Pattern 'Hola' } |
或者
Select-String -Pattern ‘(Hello.Hola)|(Hola.Hello)’
这些代码将运行......但在输出文件中没有返回任何数据......它只是带有标题“路径”的空白。
我遗漏了一些明显的东西......有人能看到一双新鲜的眼睛吗?
多发性硬化症
回答
-
Select-String的-Pattern参数接受一组模式。 -
每个
Microsoft.PowerShell.Commands.MatchInfo实例输出Select-String都有一个.Pattern属性,指示匹配的特定模式。
Get-ChildItem -Path Server_NameFolder_Name* -recurse |
Select-String -Pattern 'Hello', 'Hola' |
Select-Object Path, Pattern |
Export-Csv Server_NameFolder_NameFile_Name.csv -NoTypeInformation