PowerShell - скрипт для поиска содержимого файла по ключевым словам - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть скрипт ниже, который будет искать в папке любые файлы, содержащие слово ' 5047373 '. Однако он может проверять только текстовые файлы. Он должен иметь возможность поиска по нескольким типам файлов, включая word, csv, xlsx, pdf, txt и т. Д.

   Get-ChildItem “C:\Documents” -recurse | Select-String -pattern “5047373” | group path | select name

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Лучше всего использовать Windows Desktop Search. PowerShell не имеет возможности поиска по этим типам файлов по умолчанию, но вы можете легко установить пакет в Windows 10, чтобы использовать средство поиска, которое вы получаете в Explorer:

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
0 голосов
/ 01 ноября 2018

, так как Select-String по умолчанию использует регулярное выражение, вы можете создать список регулярных выражений ИЛИ. как то так ...

$ThingsToLookFor = @(
    'One'
    '22'
    'Three'
    '4444'
    'Five'
    )

$TTLF_Regex = $ThingsToLookFor -join '|'

'A demo line of text with 4444 embedded in it.' -match $TTLF_Regex

вывод = True

надеюсь, что поможет,
Ли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...