团队--我有一段代码可以按照设计工作。它将扫描文件夹层次结构中的所有文件以查找特定单词,然后返回找到该单词所有示例的文件的已消除重复数据的文件路径。
$properties = @(
'Path'
)
Get-ChildItem -Path \\Server_Name\Folder_Name\* -recurse |
Select-String -Pattern ‘Hello’ |
Select-Object $properties -Unique |
Export-Csv \\Server_Name\Folder_Name\File_Name.csv -NoTypeInformation
我想
1.扩展此代码以能够一次搜索多个单词。所以所有找到‘Hello’或‘Hola’的案例...如果可能的话,还可能包括整个单词列表。
1.让代码不仅返回文件路径,还返回触发它的单词……如果两个单词都跳过了,则同一路径有多行
我找到了一些文章,讨论使用如下方法进行多个单词搜索:
where { $_ | Select-String -Pattern 'Hello' } |
where { $_ | Select-String -Pattern 'Hola' } |
或
Select-String -Pattern ‘(Hello.Hola)|(Hola.Hello)’
这些代码将运行..。但RETURN输出文件中不返回任何数据...它只是空白的标题‘路径’。
我错过了一些明显的东西..。有没有人愿意用一双新的眼睛?
女士
1条答案
按热度按时间hk8txs481#
Select-String
的-Pattern
参数接受模式的数组。Select-String
输出的每个[Microsoft.PowerShell.Commands.MatchInfo]
示例都有一个.Pattern
属性,该属性指示匹配的特定模式。注:
-AllMatches
通常会在一行上找到所有匹配项,但对于传递给-Pattern
的多个模式,对于.Matches
属性中报告的匹配项,从PowerShell 7.2.x开始,这不会像预期的那样工作-请参见GitHub issue #7765。.Pattern
属性不会反映匹配的(潜在)多个模式;事实上,这在目前甚至是不可能的,因为.Pattern
属性是[Microsoft.PowerShell.Commands.MatchInfo]
的[string]
类型的成员,因此不能反映多个模式。