В дополнение к теории, вот тест, который может дать вам некоторую уверенность.
Сначала мы просто создаем текстовый файл с 26 строками, каждая из которых содержит 1 символ английского алфавита sh, повторенный 40 000 раз.
$(
97..122 | foreach {"$([char]$_)" * 40000}
) | out-file c:\temp\longstringtest.txt -Encoding utf8
Теперь мы протестируем поиск строки из 20000 символов b.
$pattern = "b" * 20000
If(Select-String -path C:\temp\longstringtest.txt -Pattern $pattern){"Found it!"}
Found it!
Мы можем go вперед и увеличить его до 40000
$pattern = "b" * 40000
If(Select-String -path C:\temp\longstringtest.txt -Pattern $pattern){"Found it!"}
Found it!
Просто чтобы убедиться, что он действительно работает
$pattern = "ba" * 40000
If(Select-String -path C:\temp\longstringtest.txt -Pattern $pattern){"Found it!"} # No output
Мне не хватило смелости протестировать максимальный размер, указанный Васифом, но я подтвердил, что до 200 000 также работают нормально.