我有以下脚本,该脚本将在文件夹位置搜索包含单词' 5047373 '的所有文件。但是,它似乎只能检查文本文件。它需要能够搜索多种类型的文件,包括word,csv,xlsx,pdf,txt等。
Get-ChildItem “C:\Documents” -recurse | Select-String -pattern “5047373” | group path | select name
答案 0 :(得分:1)
由于Select-String默认情况下使用正则表达式,因此您可以构建一个正则表达式OR列表。像这样的东西
$ThingsToLookFor = @(
'One'
'22'
'Three'
'4444'
'Five'
)
$TTLF_Regex = $ThingsToLookFor -join '|'
'A demo line of text with 4444 embedded in it.' -match $TTLF_Regex
output = True
希望有帮助,
李
答案 1 :(得分:1)
您最好的选择是使用Windows桌面搜索。 PowerShell默认情况下不具备搜索这些文件类型的功能,但是您可以轻松地在Windows 10上安装软件包以使用在资源管理器中获得的搜索功能:
Install-Package PsSearch -Scope CurrentUser
一旦安装了该文件,则应该能够从文本文件中的单词列表中进行搜索,如下所示。将您的文字输入文本文件words.txt
中,例如:
5047373
123456
Apple
Pie
那么你可以做:
$SearchResults = foreach ($Word in (Get-Content "words.txt")) {
Search-Index $Word
}
然后$SearchResults
是与查询列表匹配的文件列表。由此,您可以获得一个唯一的文件名列表:
$FileNames = ($SearchResults | Select-Object -Unique FullName).FullName