2

我正在尝试检查某个软件的先决条件。我有一组脚本可以检查磁盘空间、内存可用性等内容。

我需要创建一个脚本来检查某些端口是否打开并且可以访问。我正在使用 WMI 检查其他网络配置项,但找不到任何有关检查端口可用性的参考。

任何人有任何想法,我可以找到一个 WMI 构造来让我查看和管理端口或任何其他关于如何构建新脚本来检查端口可用性的想法?

4

3 回答 3

3

所以我找到了一个人不久前制作的脚本。它使用 netStat。应该可以在几乎任何 Windows 机器上工作。我想我对使用 WMI 的渴望蒙蔽了双眼。

Sub PortMonitor (strCommand2)

  Set StdOut = WScript.StdOut
  Set objShell = CreateObject("WScript.Shell")
  set objScriptExec = objShell.Exec (strCommand2)

  strPingResults = LCase(objScriptExec.StdOut.ReadAll)

  if len (strPingResults) > 0 then
     WScript.Echo "Established!"
  End if
end Sub

Dim strcommand
strCommand = "cmd /C ""netStat -n |find ""127.0.0.1:1137"" | find ""ESTABLISHED"""""
Call PortMonitor (strCommand)

操作:http ://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Server/2003_Server/Q_27476065.html#

于 2012-05-16T16:40:54.203 回答
1

使用cmd.exenetstat

D:\ :: type openports.bat
@echo off
for /f "tokens=2" %%i in ('netstat -an -p tcp ^| findstr ABH') do (
        for /f "delims=: tokens=2" %%p in ("%%i") do (
                echo %%p
        )
)

D:\ :: openports.bat
80
135
445
...

netstat请注意,这适用于德语版本的ABHÖREN; 对于英语,它可能类似于LISTENING,因此您必须将 替换为findstr ABH适当的英语表达。

于 2012-05-16T17:42:47.217 回答
1

稍微不一样 :

Function PortIsOpen(port)
    PortIsOpen = False
    Set StdOut = WScript.StdOut
    Set objShell = CreateObject("WScript.Shell")
    Set objScriptExec = objShell.Exec("cmd /C ""netstat -ano -p tcp | find "":" & port & " "" "" ")
    strPingResults = objScriptExec.StdOut.ReadAll
    If Len(strPingResults) > 0 Then PortIsOpen = True
End Function

Msgbox PortIsOpen("135")
于 2021-10-23T09:49:52.950 回答