Вы можете сделать что-то вроде следующего:
while (1) {
[PsCustomObject]@{
'Date and Time' = Get-Date -Format 'M/d/yyyy HH:mm'
'NetStat' = netstat -aon | findstr 20484 |
Measure-Object -Line | Select -Expand Lines
}
sleep 60
}
Объяснение:
1
в условии while
всегда возвращает true, поэтому l oop никогда не закончится, если не будет разбито вручную.
Measure-Object -Line
возвращает объект TextMeasureInfo
. Поскольку вам нужно только количество строк из этого вывода, вам нужно получить значение свойства Lines
. Это делается по трубопроводу Select -Expand Lines
.
Параметр -Format
Get-Date позволяет вводить представление в формате строки при условии, что разрешен нужный формат.
[PsCustomObject]
- ускоритель типов для пользовательского объекта. Это дает возможность создавать заголовки / свойства, которые вы хотите, предоставляя связанные с ними значения. Значения и / или свойства могут быть добавлены во время объявления или позже.
Синтаксис @{}
окружает таблицу ha sh. Цель таблицы ha sh - хранить пары ключ / значение. Это упрощает создание быстрого объекта, поскольку PowerShell v3.
sleep
является псевдонимом для Start-Sleep . Он может принимать -Seconds
или -Milliseconds
с -Seconds
в качестве привязки параметра по умолчанию, когда предоставляется только значение.
Если вы не хотите, чтобы l oop - go на неопределенное время вы можете добавить счетчик, например, так: l oop 5 раз:
$count = 5
while ($count--) {
[PsCustomObject]@{
'Date and Time' = Get-Date -Format 'M/d/yyyy HH:mm'
'NetStat' = netstat -aon | findstr 20484 |
Measure-Object -Line | Select -Expand Lines
}
sleep 60
}
Я не знаю, ищете ли вы номер порта или идентификатор процесса. Поскольку любой из них теоретически может быть в вашем выводе, вы можете рассмотреть этот случай. Если вы ищете порт, я бы использовал findstr :20484
вместо этого. Если вам нужен только идентификатор процесса, я бы использовал netstat -ano | Where {$_ -match '\s20484'}