我有一张小纸条。
$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
}
}