【发布时间】:2013-10-06 20:54:23
【问题描述】:
我想编写一个脚本来检查随机 IP 或主机名以查看端口是否打开。这是我到目前为止所拥有的。脚本名称是 checkports。
foreach ($xhost in $computername){
Write-Host $xhost
foreach ($port in $ports) {
$Socket = New-Object System.Net.Sockets.TCPClient
$Connection = $Socket.BeginConnect($xhost,$port,$null,$null)
$Connection.AsyncWaitHandle.WaitOne(5000,$false) | out-null
if ($Connection -eq $true)
{ write-host = "$xhost port $port is open" }
else
{ write-host = "port $port is closed" }
$Socket.EndConnect($Connection)
$Socket.Close()
}
}
我想通过以下方式输入值: .\checkport '192.186.1.5' 或者 '192.168.1.5', '192.168.1.105', 192.168.1.110' |检查端口
它似乎没有读取 IP 地址或显示结果。
我想知道是否有人可以指出那里可以告诉我我在这个脚本中做错了什么?
【问题讨论】:
-
你能显示你的脚本参数块吗?
-
1.
WaitOne的返回值将告诉您等待是否已完成或超时:但您正在将其丢弃。 2.既然要屏蔽,为什么不使用屏蔽Socket.Connect? -
这是一个带有 powershell 脚本的要点,用于检查开放端口 gist.github.com/dhcgn/44acdddbaea24d2f367d85a00389368c
标签: powershell port network-scan