昨日晚上练习:在上次的端口开放探测中增加了 -o 可以保存到指定文件中,并把之前的代码进行了简化
param (
[parameter(mandatory=$false)]
[alias('u')]
$url= "127.0.0.1",
[parameter(mandatory=$false)]
[alias('p')]
$ports,
[parameter(mandatory=$false)]
[alias('f')]
$filename,
[parameter(mandatory=$false)]
[alias('o')]
$result
)
function Check-PortStatus($url, $ports) {
foreach ($port in $ports) {
$socket = New-Object System.Net.Sockets.TcpClient
try {
$socket.Connect($url, $port)
Write-Host "$url : $port is open" -ForegroundColor Green
Add-result $result $port $url
}
catch {
Write-Host "$url : $port is closed" -ForegroundColor Red
}
finally {
$socket.Dispose()
}
}
}
function Add-result($result,$port,$url){
Write-Output "$url : $port is open" >> $result
}
if ($ports -eq $null){
$ports = (21,22,80,443,445,3389)
}
if ($ports -match '-'){
$range = $ports -split '-'
$start = [int]$range[0]
$end = [int]$range[1]
$ports = $start..$end
}
if ($filename -eq $null){
Check-PortStatus $url $ports
}else {
$file = Get-Content $filename
foreach ($url in $file){
Check-PortStatus $url $ports
}
}