使用WMI撤回远程netstat数据

时间:2011-09-06 20:39:21

标签: c# wmi rpc wmi-query

我正在尝试从远程计算机获取netstat信息。现在,我的方法是:

1)使用命令netstat -a>在C#中执行RemoteProcess。 C:\ file.out 2)我将远程C $共享映射到我的本地
3)我从mount

中读取文件

我希望同时在许多系统上执行此操作,并且使用此方法的性能很差。我想更好的方法是查询WMI,但我找不到如何从msdn上的类定义中提取netstat信息。有人有主意吗? TIA!

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并通过使用以下命令行创建远程WMI进程来解决它:

string commandLine = "cmd.exe /C netstat.exe -ano > \"{0}\"";

我基本上只是确定了我正在使用哪种OS(使用WMI),并使用C:\users\public\output.txtC:\Documents and Settings\All Users\output.txt格式化命令行的其余部分。然后我只是读取结果并删除源文件。

答案 1 :(得分:0)

您是否考虑过SNMP而不是使用WMI?在我看来,SNMP似乎是最合乎逻辑的协议。

虽然我的SNMP经验仅限于监控交换机和UDP,但我会尝试给你一些指示,说明从哪里开始。

首先,这需要SNMP服务在受监控的计算机上运行,​​并且可能需要调查哪些MIB要使用。我无法确切地告诉你在哪里看,但我找到了一个已经完成的项目(尽管不是.NET,它应该对参考有用)

Link to projectscript

通过一些调查,这个脚本应该提供足够的信息来试一试。

我在他的脚本中注意到以下OID

对于TCP(包含完整的树以给它一些上下文):

1.3.6.1.2.1.6.13.1.1 - tcpConnState
1.3.6.1.2.1.6.13.1 - tcpConnEntry
1.3.6.1.2.1.6.13 - tcpConnTable
1.3.6.1.2.1.6 - tcp
1.3.6.1.2.1 - SNMP MIB-2
1.3.6.1.2 - IETF Management
1.3.6.1 - OID assignments from 1.3.6.1 - Internet
1.3.6 - US Department of Defense
1.3 - ISO Identified Organization
1 - ISO assigned OIDs

对于UDP:

1.3.6.1.2.1.7.5.1.1 - udpLocalAddress
1.3.6.1.2.1.7.5.1 - udpEntry
1.3.6.1.2.1.7.5 - udpTable
1.3.6.1.2.1.7 - udp
1.3.6.1.2.1 - SNMP MIB-2
1.3.6.1.2 - IETF Management
1.3.6.1 - OID assignments from 1.3.6.1 - Internet
1.3.6 - US Department of Defense
1.3 - ISO Identified Organization
1 - ISO assigned OIDs
Top of OID tree

This link提供了有关使用SNMP

的更多信息