Powershell显示端口连接和仅过滤关闭的端口



我有一张小纸条。

$portnumbers=2000,2001,80,81,21,30300,30301,30302,30303,6000,6001,6002,600
$Ipaddress= "127.0.0.1"
foreach($p in $portnumbers ){
Test-OpenPort -Port $p | Select port,status | Format-Table
}

输出为:

Port Status
---- ------
2000  False
Port Status
---- ------
2001  False
Port Status
---- ------
80   True
Port Status
---- ------
81  False

Port Status
---- ------
21  False

Port Status
---- ------
30300  False

我想以不同的方式得到这个结果,当端口关闭时,我想接收一些按摩端口";端口号";关闭-为红色当它打开时;端口号";已打开。

然后按摩说";这是关闭的端口:;就像夏天。

你能帮帮我吗?

Mathias击败了我,但如果你也想得到关闭端口的摘要,那么在一个变量中捕获循环的关闭结果,然后显示。

类似的东西

$closed = foreach($p in $portnumbers ){
$result = Test-OpenPort -Port $p
if ($result.Status) { Write-Host "Port $p is open" }
else { Write-Host "Port $p is closed" -ForegroundColor Red ; $p}
}
# summary
"`r`nThese ports are closed:`r`n{0}" -f ($closed -join "`r`n")

您可以将Write-Host-ForegroundColor参数一起使用:

Write-Host "Port 123 is closed!" -ForgroundColor Red

要根据Status属性值选择不同的背景颜色和消息,可以在循环中使用一个简单的if语句:

$portnumbers=2000,2001,80,81,21,30300,30301,30302,30303,6000,6001,6002,600
$Ipaddress= "127.0.0.1"
foreach($p in $portnumbers ){
$portTestResult = Test-OpenPort -Port $p | Select Port,Status
if($portTestResult.Status){
Write-Host "Port $p is open" -ForegroundColor Green
}
else{
Write-Host "Port $p is closed" -ForegroundColor Red
}
}

最新更新