простой шаблон выбора строки PowerShell - PullRequest
1 голос
/ 25 февраля 2020

Почему скрипт PowerShell

Get-NetRoute | Select-String -Pattern "255"
Get-NetRoute | Select-String -Pattern 255
Get-NetRoute | Select-String -Pattern '255'
Get-NetRoute | Select-String -Pattern '.*255.*'

не дает никакого результата? Что не так с шаблоном?

Ответы [ 2 ]

2 голосов
/ 25 февраля 2020

Командлет Select-String предназначен для работы со строковыми объектами. Выходные данные командлета Get-NetRoute представляют собой массив.

enter image description here

Чтобы код работал, его необходимо преобразовать в string объект, подобный этому.

(Get-NetRoute | out-string).split("`n") | Select-String -Pattern "255"

Но я сомневаюсь, что было бы очень полезно, если бы вы намеревались использовать результаты вниз по дорожке.

Что вам действительно нужно, это Where-object.

Get-NetRoute | Where-Object {$_.DestinationPrefix -like "*255*"}. Надеюсь, это поможет.

0 голосов
/ 25 февраля 2020

Select-String будет интерпретировать Get-NetRoute как одну строку (вывод - один объект), поэтому вам нужно разделить ее с помощью переключателя -Stream. Обратите внимание, что ipconfig | select-string будет не иметь ту же проблему, что и команда DOS, и поэтому по умолчанию PowerShell будет разбивать его на строки, но для команд PowerShell это нужно делать, когда вы хотите сделать построчно Строковый запрос, так как конвейер пропускает один объект, так что вы правильно делаете, что используете Select-String, но просто должны понимать , как интерпретирует ввод из конвейера, и тогда он будет работать нормально:

Get-NetRoute | Out-String -Stream | Select-String -Pattern "255"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...