您可以执行以下操作:
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
}
说明:
while 条件中的1 始终返回 true,因此除非手动中断,否则循环将永远不会结束。
Measure-Object -Line 返回一个TextMeasureInfo 对象。由于您只需要该输出的行数,因此您需要检索 Lines 属性的值。通过管道连接到Select -Expand Lines 会执行此操作。
Get-Date 的 -Format 参数允许输入字符串格式表示,前提是允许所需的格式。
[PsCustomObject] 是自定义对象的类型加速器。这允许在提供相关值的同时创建所需的标题/属性。值和/或属性可以在声明时或之后添加。
@{} 语法围绕着一个哈希表。哈希表的目的是保存键/值对。自 PowerShell v3 以来,这为创建快速对象提供了一种简单的方法。
sleep 是Start-Sleep 的别名。它可以接受-Seconds 或-Milliseconds,当只提供一个值时,-Seconds 是默认参数绑定。
如果你不希望循环无限期地进行,你可以像这样添加一个计数器来循环 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'}