Как и в сообщении об ошибке: *172.20.*
не является допустимым регулярным выражением.Это шаблон с подстановочными знаками, который можно использовать с оператором -like
, но не с Select-String
.*
в регулярном выражении является модификатором, который не может стоять самостоятельно, он требует чего-то, к чему он применяется.Эквивалент регулярного выражения подстановочного знака *
(соответствует нулю или более символов) равен .*
.Но поскольку регулярные выражения (в отличие от шаблонов подстановочных знаков) по умолчанию не привязаны, вам не нужно добавлять их в начало и конец шаблона, чтобы совпадение работало.
Либо измените выражение на фактическоерегулярное выражение:
... | Select-String -Pattern '172\.20\.' | ...
или измените код, чтобы использовать совпадения с подстановочными знаками вместо совпадений с регулярным выражением:
Get-ChildItem -Recurse -Path 'C:\Root' | Where-Object {
Get-Content $_.FullName | Where-Object { $_ -like '*172.20.*' }
} | Select-Object -Expand Name
Использование -SimpleMatch
не сработало с вашим подходом, поскольку -Pattern '*172.20.*' -SimpleMatch
будет искать буквенную (под) строку *172.20.*
(со звездочками), которая, вероятно, отсутствует в ваших файлах.Это сработало бы, если бы вы удалили шаблоны из шаблона:
... | Select-String -Pattern '172.20.' -SimpleMatch | ...