Как использовать PowerShell Select-String для фильтрации вывода по нескольким условиям?

В PowerShell есть ведь Select-String, аналог grep из linux, только вот никак не разберу его синтаксис, как в нём несколько условий использовать.
Вот мне нужно посмотреть какие сетевые соединения открыты командой "NETSTAT -ano -p TCP", но при этом вывести только строки включающие в себя "ESTABLISHED" и исключить строки с "127.0.0.1:1433" и "10.10.10.5:80"
  • Вопрос задан
  • 1074 просмотра
Пригласить эксперта
Ответы на вопрос 3
@NortheR73
системный инженер
можно последовательно выполнить несколько вызовов Select-String:
NETSTAT -ano -p TCP | Select-String 'established' | Select-String -NotMatch '127.0.0.1:1433','10.10.10.5:80'
Ответ написан
Комментировать
john36allTa
@john36allTa
alien glow of a dirty mind
используя регулярку:
NETSTAT -ano -p TCP  | Select-String -pattern '^(?!.*?127\.0\.0\.1:1433\s|.*?10\.10\.10\.5:80\s).*ESTABLISHED'
Ответ написан
Комментировать
Therapyx
@Therapyx
Data Science
Ты можешь информацию из этой команды записать сначала в обычный стринг Array
$Info = NETSTAT -ano -p TCP
потом сконвертировать его в powershell object
$Info = $Info [3..$Info.count] | ConvertFrom-String | select p2,p3,p4,p5

после чего можно уже очень удобно манипулировать данными как ты этого хочешь. К примеру
$result = $Info  | Where-Object {$_.P5 -eq "ESTABLISHED" -and $_.P4 -eq "127.0.0.1:1433"}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы