使用WMIC批量检测远程服务器到日志服务器连通性的方案咨询
问题解答
1. 无需网络/安全团队协助的连通性检测方法
以下方法全部依赖Windows系统内置组件,不需要申请额外权限、部署第三方工具即可使用:
- 原生PowerShell命令检测:Windows Server 2012 R2及以上版本自带
Test-NetConnectioncmdlet,执行后可直接返回TCP端口连通性结果,无交互、输出清晰,不会触发安全软件拦截。 - VBS脚本检测:调用系统原生WScript运行TCP连接检测脚本,兼容性覆盖全版本Windows系统,仅用内置API即可完成端口连通性校验。
- 内置curl工具检测:Windows Server 2016及以上版本自带
curl.exe,直接执行curl 日志服务器IP:端口即可通过返回结果判断连通性,无需额外配置。
2. 基于WMIC实现批量连通性检测的方案
之前命令无法拿到输出的核心原因是WMIC调用PROCESS call create创建进程时默认不启动cmd解析器,>重定向符无法被识别,导致输出无法写入文件,按以下步骤调整即可:
第一步:修改WMIC执行命令,包裹cmd解析器
将检测逻辑用cmd /c包裹,同时重定向标准输出、错误输出到临时文件,推荐优先用PowerShell的检测命令,输出更易读:
WMIC /node:computer1,computer2 /user:domain\userid PROCESS call create "cmd /c \"powershell -Command 'Test-NetConnection -ComputerName 替换为日志服务器IP -Port 替换为对应端口 | Select-Object ComputerName,RemotePort,TcpTestSucceeded | Out-File -FilePath C:\conn_test_result.txt -Encoding UTF8'\""
如果要兼容无PowerShell的低版本服务器,可用telnet版本,可自行添加超时控制避免进程卡住:
WMIC /node:computer1,computer2 /user:domain\userid PROCESS call create "cmd /c \"timeout /t 3 /nobreak && telnet.exe 替换为日志服务器IP 替换为对应端口 > C:\conn_test_result.txt 2>&1\""
第二步:批量拉取检测结果
可调用WMIC的账号默认具备目标服务器本地管理员权限,直接访问远程主机的C盘管理员共享即可拉取结果,批量操作逻辑如下:
- 将所有待检测服务器的主机名/IP写入
servers.txt,每行一条记录 - 批量触发检测命令后等待5-10秒,等待所有服务器检测完成
- 执行循环命令将所有远程结果汇总到本地文件:
for /f %i in (servers.txt) do type \\%i\C$\conn_test_result.txt >> ./all_conn_result.txt
- 检测完成后可批量删除远程服务器上的临时结果文件,避免残留垃圾。
内容的提问来源于stack exchange,提问作者Parth Maniar
相关产品推荐
相关产品推荐

