利用简单的TCP套接字来简单判断一个端口是否可用:
Function Test-PortAvailable { param( [validaterange(1,65535)] [int]$Port ) $sockt=New-Object System.Net.Sockets.Socket -ArgumentList 'InterNetwork','Stream','TCP' $ip = (Get-NetIPConfiguration).IPv4Address | Select -First 1 -ExpandProperty IPAddress $ipAddress = [Net.IPAddress]::Parse($ip) Try { $ipEndpoint = New-Object System.Net.IPEndPoint $ipAddress,$port $sockt.Bind($ipEndpoint) return $true } Catch [exception] { return $false } Finally { $sockt.Close() } }
使用示例:
PS> Test-PortAvailable -Port 102 True PS> Test-PortAvailable -Port 1025 False