简单网络管理协议(SNMP,Simple Network Management Protocol) 是一种用于在 IP 网络中管理设备的标准协议。 WMI-SNMP 提供程序(WMI-SNMP Provider)
Net-SNMPnet-snmp - Browse /net-snmp/5.10-pre-releases at SourceForge.net
net-snmp - Browse /net-snmp/5.9.5.2 at SourceForge.net

Net-SNMP 简介
该套件包含:
- 命令行应用程序,用于:
- 从支持 SNMP 的设备检索信息,可以使用单个请求(
snmpget、snmpgetnext)或多个请求(snmpwalk、snmptable、snmpdelta)。 - 修改支持 SNMP 的设备上的配置信息(
snmpset)。 - 从支持 SNMP 的设备检索固定的信息集合(
snmpdf、snmpnetstat、snmpstatus)。 - 在 MIB OID 的数值形式和文本形式之间进行转换,并显示 MIB 的内容和结构(
snmptranslate)。
- 从支持 SNMP 的设备检索信息,可以使用单个请求(
- 图形化 MIB 浏览器(
tkmib),使用 Tk/perl 开发。 - 用于接收 SNMP 通知的守护进程应用程序(
snmptrapd)。选定的通知可以被记录(到系统日志、NT 事件日志或纯文本文件中),转发到另一个 SNMP 管理系统,或者传递给外部应用程序。 - 用于响应管理信息查询的可扩展代理(
snmpd)。这包括对广泛 MIB 信息模块的内置支持,并且可以使用动态加载的模块、外部脚本和命令,以及 SNMP 多路复用和代理可扩展性协议进行扩展。 - 用于开发新 SNMP 应用程序的库,提供 C 语言和 Perl 语言的 API。
注意:功能可能会因操作系统而异。请参阅 README 文件以获取特定于您平台的信息。
- 文档部分包含有关命令行工具、安装、配置等的详细信息。
- 如果您是 Net-SNMP 或 SNMP 的新手,教程部分是一个很好的起点。
- 下载部分包含各种平台的源代码和二进制文件。
- 请查看我们的 GitHub 项目以提交错误报告和补丁。
配置 SNMP 服务 - Windows Server | Microsoft Learn
无法安装 SNMP 和 WMI SNMP 提供程序功能 - Windows Client | Microsoft Learn
Microsoft-Windows-SNMP-Agent-Service | Microsoft Learn
设置 WMI SNMP 环境 - Win32 apps | Microsoft Learn
访问 SNMP 设备 - Win32 apps | Microsoft Learn
从 SNMP 设备读取数据以及向其中写入数据 - Win32 apps | Microsoft Learn
配置 SNMP 组策略 - Win32 apps | Microsoft Learn
SNMP 参考 - Win32 apps | Microsoft Learn
WinSNMP API - Win32 apps | Microsoft Learn


🕵️ SNMP服务
- 角色定位:它是运行在Windows系统上的一个后台服务(Agent,代理)。
- 主要任务:
- 监视:时刻盯着本机或网络中其他设备(如路由器、交换机、打印机)的运行状态(比如CPU利用率、网络流量、硬盘空间等)。
- 报告:一旦收集到关键数据,或者设备发生了特定事件(如断网、过载),它就会主动向网络管理员的控制台发送报告(Trap)。
- 一句话总结:它是干活的,负责收集数据并向上汇报。
🌉 SNMP WMI提供程序
- 角色定位:它是一个中间件/接口层,连接了SNMP协议和Windows管理规范(WMI)。
- 为什么需要它:
- 传统的SNMP使用的是特定的SNMP协议语言。
- Windows的脚本(VBScript, PowerShell)和管理工具习惯使用WMI语言。
- 如果没有这个“翻译官”,Windows的管理员想要获取SNMP数据,就得写很复杂的底层代码。
- 主要任务:
- 访问数据:允许WMI客户端(脚本或应用程序)像查询本地Windows信息一样,轻松获取远程SNMP设备的信息。
- 统一接口:让开发者可以使用统一的C++接口或脚本对象来管理网络设备。
- 事件转换:它能把SNMP发出的“陷阱”(Trap,即警报)转换成Windows能听懂的“WMI事件”,方便系统进行自动化处理。
- 一句话总结:它是搞对接的,让Windows的管理工具能无障碍地读懂和控制SNMP设备。
📌 总结对比
| 组件 | 角色比喻 | 核心作用 | 受益对象 |
|---|---|---|---|
| SNMP服务 | 侦察兵 | 采集数据,发送警报 | 网络监控系统 (如Zabbix, Nagios) |
| SNMP WMI提供程序 | 翻译官 | 协议转换,统一接口 | Windows管理员、脚本开发者、WMI应用 |
Windows 环境下利用 SNMP 进行网络管理的底层架构和上层应用桥梁。
为了帮助您更好地理解、配置或在实际工作中应用这两项技术,我为您做进一步的扩展和梳理:
1. SNMP 服务(底层基础)
SNMP 服务扮演的是“被管理者(代理)”的角色。
- 工作模型:基于经典的 Manager(管理站)- Agent(代理)架构。网络设备(如路由器、交换机、甚至安装了SNMP服务的Windows Server)运行 Agent。
- 数据结构:Agent 的活动是以 MIB(管理信息库) 为基础的,每个监控指标(如CPU利用率、端口流量)都有一个唯一的 OID(对象标识符)。
- 通信方式:
- 轮询:管理站主动问,代理被动答。
- 陷阱:代理主动发。当设备发生故障(如断网、CPU过载)时,Agent 会主动向控制台发送 Trap 报警,这也是您提到的“报告活动”的核心方式。
2. SNMP WMI 提供程序(上层桥梁)
如果说 SNMP 服务讲的是“网络语言”,WMI 讲的就是“Windows 语言”。SNMP WMI 提供程序就是“翻译官”。
- 核心价值:在引入 WMI 提供程序之前,Windows 管理员如果想监控网络设备,需要安装第三方的 MIB 浏览器或网管软件(如 SolarWinds、PRTG)。有了它,管理员可以直接用熟悉的 Windows 工具(如 PowerShell、VBScript、C++ 程序)来统一管理本地系统和远程网络设备。
- 映射机制:它会将设备端的 SNMP MIB 和 OID 动态映射为 Windows 系统中的 WMI 类和属性。
- 事件转换:这是非常强大的一点。它能把网络设备发来的晦涩的 SNMP Trap 数据包,转换成 Windows 系统能识别的标准的 WMI 事件。这意味着您可以写一段简单的 PowerShell 脚本,去订阅这个 WMI 事件,一旦路由器断电,Windows 就可以自动触发某个应急脚本(比如发邮件或重启某个服务)。
💡 实际工作中的应用流程示例:
假设您想用 PowerShell 脚本查询一台思科交换机的端口状态:
- 交换机上开启了 SNMP Agent 服务。
- 您的 Windows Server 上安装了“SNMP WMI 提供程序”和“SNMP服务”(通常作为Windows功能安装)。
- 您将思科的 MIB 文件导入到 Windows 中(编译成 WMI 类)。
- 您在 PowerShell 中使用
Get-WmiObject或Get-CimInstance命令,直接查询对应的 WMI 类。 - WMI 提供程序在后台将这个查询转换为 SNMP 协议包,发给交换机,拿到数据后再翻译成对象返回给 PowerShell。
⚠️ 实施时的注意事项(避坑指南):
- 版本安全:SNMP v1 和 v2c 是明文传输的(Community String 就像密码一样裸奔),非常不安全。如果条件允许,务必使用 SNMP v3(支持加密和身份验证)。注:Windows 自带的 SNMP 服务通常只支持 v1/v2c,如果要全面支持 v3,可能需要借助第三方企业级 WMI SNMP 提供程序。
- 功能状态:在较新的 Windows Server 版本中,微软正在逐渐边缘化传统的 WMI 和 SNMP 服务,转而推荐使用 Windows Admin Center (WAC)、Open Management Infrastructure (OMI) 等现代协议。但在传统内外网混合监控场景中,SNMP WMI 提供程序依然是极其有用的轻量级方案。
- MIB 编译:要让 WMI 识别特定厂商的设备,必须使用
smi2smir等工具将厂商提供的.mib文件编译成 WMI 能读懂的格式,这一步在实施时往往是最容易报错的。
正在规划相关的部署,或者需要编写具体的 WMI 查询/Trap 接收脚本

简单网络管理协议(SNMP,Simple Network Management Protocol)是一种广泛使用的网络管理协议。SNMP 的不同版本在功能、性能和安全性方面有了显著发展。以下是 SNMP V1、V2 和 V3 的发展时间线和主要特点。
SNMP V1 (1988)
- 发布日期:1988年
- 标准化:RFC 1157
- 主要特点:
- 最初版本,提供基本的网络设备监控功能。
- 使用简单的请求/响应模型执行管理操作。
- 数据存储在管理信息库(MIB,Management Information Base)中。
- 基于 UDP 协议,通常使用 161 端口进行通信。
- 安全性较低,缺乏认证和加密机制。
SNMP V2 (1993)
- 发布日期:1993年
- 标准化:RFC 1901 至 RFC 1908
- 主要特点:
- 引入了新的数据类型和更复杂的操作,例如
GetBulk操作,允许一次获取大量数据,减少网络流量。 - 改进了错误处理机制,增加了
Response消息中的错误状态。 - 提供了更高效的管理能力,但仍然使用明文传输,安全性依旧较低。
- SNMP V2c 是 V2 的一个变种,采用社区字符串进行简单的安全控制。
- 引入了新的数据类型和更复杂的操作,例如
SNMP V3 (1998)
- 发布日期:1998年
- 标准化:RFC 3410 至 RFC 3418
- 主要特点:
- 引入了显著的安全增强功能,包括身份验证、加密和访问控制。
- 支持用户安全模型(USM,User-based Security Model),允许每个用户设置不同的访问权限。
- 提供了消息完整性检查,以防止数据篡改。
- 支持加密以保护数据隐私。
- 增强的管理架构,使网络管理更为灵活和安全。
- SNMP V1:基本的网络监控能力,缺乏安全性。
- SNMP V2:引入了新的操作和数据类型,但安全性仍然不足。
- SNMP V3:大幅提升了安全性,成为现代网络管理的标准。
随着网络安全意识的增强,SNMP V3 由于其安全特性而被广泛推荐和使用。在实际应用中,选择合适的 SNMP 版本应考虑网络环境和安全需求。
SNMPv3(简单网络管理协议版本3)是用于网络管理的协议,旨在提供更强大的安全性和管理功能。它的底层原理涵盖了多个方面,包括其体系结构、安全模型、消息格式以及数据处理过程。以下是对 SNMPv3 底层原理的详细介绍。
1. SNMPv3 架构
SNMPv3 的架构主要由以下几个组成部分构成:
- 管理站(Manager):负责发送 SNMP 请求和接收响应的设备,通常是网络管理系统。
- 代理(Agent):被监控的设备,负责接收来自管理站的请求,并返回相应的数据。代理会维护一个管理信息库(MIB),其中包含设备的各种状态和性能数据。
- 管理信息库(MIB):定义了可被管理的对象和数据结构的集合。每个对象都有一个唯一的标识符(OID)。
2. 安全模型
SNMPv3 引入了多种安全机制,以确保数据的机密性、完整性和身份验证。其主要安全功能包括:
-
身份验证:确保消息的发送者是合法用户。SNMPv3 支持两种身份验证协议:
- MD5:一种原始的哈希算法,用于计算消息摘要。
- SHA:更强大的哈希算法,相比 MD5 提供更高的安全性。
-
加密:确保数据在传输过程中的机密性。SNMPv3 支持以下加密标准:
- DES(数据加密标准):对称加密算法。
- AES(高级加密标准):更安全的对称加密算法。
-
访问控制:通过视图和组的方式来限制对 MIB 对象的访问。
3. 消息格式
SNMPv3 的消息格式相较于前一版本有显著变化,主要由以下部分组成:
- 版本号:指示 SNMP 消息的版本。
- 社区名:虽然在 SNMPv3 中不再使用,但仍然可以用于兼容性。
- 安全模型:指定消息使用的安全机制。
- 用户名:发送消息的用户标识。
- 加密数据:根据配置的安全级别,可能会包括加密后的有效负载。
- 消息认证码(MAC):用于确保消息的完整性。
4. 工作流程
SNMPv3 的基本工作流程如下:
-
管理站发送请求:管理站使用 SNMPv3 发送请求到代理。这些请求可以是
Get、Set或GetBulk类型。 -
身份验证与加密:
- 代理接收到请求后,会验证发送者的身份。如果身份验证成功,代理将解密请求消息。
- 如果请求中包含需要访问的 MIB 对象,代理会进行相应的数据处理。
-
代理响应:代理生成响应消息,将其加密并附上消息认证码,确保数据的机密性和完整性。
-
管理站接收响应:管理站接收到响应后,进行解密和身份验证,确保消息的可靠性。
5. 主要优势
- 增强的安全性:相比于 SNMPv1 和 v2,SNMPv3 提供了更为严格的安全措施,能够防止未授权访问和数据篡改。
- 灵活的访问控制:通过用户和组的管理,可以精确控制不同用户对 MIB 对象的访问权限。
- 支持复杂网络环境:适应多种网络拓扑和设备类型,支持大规模网络管理。
SNMPv3 通过引入安全模型、提供加密和身份验证、增强访问控制等手段,为网络管理引入了更强的安全特性,使得它在现代网络环境中成为一个重要的管理工具。了解 SNMPv3 的底层原理,有助于网络管理员更有效地利用这一协议进行网络监控和管理。
SNMPv3(简单网络管理协议版本3)在逻辑上通过一系列模块和流程组成,以实现网络设备的管理和监控。以下是 SNMPv3 的逻辑链,包括其组件、工作流程和功能。
SNMPv3 逻辑链
1. 主要组件
SNMPv3 的逻辑链可以分为几个主要组件:
-
管理站(Manager):网络管理系统,负责发送请求和接收响应。
-
代理(Agent):被管理的设备,接收来自管理站的请求并提供数据。
-
管理信息库(MIB):定义了可管理对象的集合,每个对象都有唯一的标识符(OID)。
-
安全模型(USM):用户安全模型,提供身份验证、加密和访问控制。
-
视图和组(VACM):视图访问控制模型,用于定义不同用户对 MIB 对象的访问权限。
2. 工作流程
SNMPv3 的工作流程如下:
-
用户身份验证
- 管理站首先需要确定用户的身份,使用用户名和密码进行身份验证。
- 可以选择使用 MD5 或 SHA 加密算法进行身份验证。
-
消息构建
- 管理站根据需要查询或设置的对象构建 SNMP 消息。这些消息包含:
- 版本号
- 用户名
- 请求类型(如
Get、Set) - MIB OID
- 消息完整性校验码(MAC)
- 管理站根据需要查询或设置的对象构建 SNMP 消息。这些消息包含:
-
消息加密
- 如果配置了加密,管理站使用所选的加密算法(如 DES 或 AES)对消息进行加密。
- 加密后的消息确保在传输过程中不被窃听。
-
消息发送
- 管理站通过网络将构建好的消息发送到代理。
-
代理接收请求
- 代理接收到请求后,首先进行身份验证,确保发件人是合法用户。
- 代理解密请求消息,并检查请求的有效性。
-
数据处理
- 代理根据请求中的 OID 查找相应的数据,然后生成响应消息。
- 如果请求是
Set类型,代理会更新 MIB 中相应的对象。
-
响应消息构建
- 代理构建响应消息,包括:
- 响应状态(成功或失败)
- 所请求的数据
- 消息完整性校验码(MAC)
- 代理构建响应消息,包括:
-
响应加密
- 如果启用了加密,代理将响应消息进行加密以保护数据。
-
响应发送
- 代理将响应消息发送回管理站。
-
管理站接收响应
- 管理站接收到响应后,进行解密和验证。
- 检查消息的完整性,确保数据未被篡改。
-
结果处理
- 管理站根据响应中的数据进行相应操作,比如更新显示、记录日志等。
3. SNMPv3 特性与优势
- 安全性:提供身份验证和加密,防止未授权访问和数据篡改。
- 灵活性:允许多种安全和访问控制机制,适用于不同的管理需求。
- 可扩展性:支持大规模网络管理,能够处理多种设备和服务。
SNMPv3 的逻辑链通过严格的身份验证、消息加密和访问控制,确保网络管理的安全性和有效性。理解这一逻辑链有助于网络管理员更好地实施和管理网络监控系统,从而提高整体网络的安全性和稳定性。
SNMPv3(简单网络管理协议版本3)由于其强大的安全特性和灵活的管理功能,广泛应用于各种网络和设备管理场景。以下是一些常见的 SNMPv3 应用场景:
1. 数据中心和服务器监控
在数据中心中,使用 SNMPv3 来监控服务器和网络设备的性能和状态是非常普遍的。通过 SNMPv3,管理员可以:
- 监测 CPU 使用率、内存使用情况、磁盘空间和网络流量。
- 收集硬件状态信息,如温度、风扇速度和电源状态。
- 设置阈值并配置告警,以便在性能下降或故障时及时响应。
2. 网络设备管理
SNMPv3 在网络设备(如路由器、交换机、防火墙等)的管理中发挥着重要作用。管理员可以:
- 监控网络设备的运行状况,包括接口状态、流量统计和错误率。
- 远程配置设备,例如修改路由表或更改 VLAN 设置。
- 执行故障排查,通过 SNMP 收集日志和状态信息,以便快速定位问题。
3. 企业级网络监控
在大型企业环境中,SNMPv3 可用于监控整个网络基础设施,包括:
- 监控各个分支机构的网络连接和带宽使用情况。
- 收集和分析网络性能数据,以优化网络资源的使用。
- 确保网络设备的安全性,防止未授权访问。
4. IoT 设备管理
随着物联网(IoT)的发展,SNMPv3 也被应用于 IoT 设备的管理。具体应用包括:
- 监控传感器、摄像头和其他智能设备的状态和性能。
- 收集设备数据以进行分析和决策支持,如环境监测、智能城市管理等。
- 实现远程管理和故障排除,确保 IoT 设备的高可用性。
5. 服务提供商网络管理
电信和互联网服务提供商(ISP)利用 SNMPv3 来管理其网络基础设施,确保服务质量。应用场景包括:
- 监测用户接入点的性能,确保网络连接的稳定性。
- 实时跟踪流量模式,以便进行容量规划和网络优化。
- 收集客户报告的故障信息,快速响应并解决问题。
6. 安全合规性监控
由于 SNMPv3 提供了强大的安全功能,它在安全合规性监控中也得到了广泛应用。通过 SNMPv3,组织可以:
- 监控网络中的异常活动,识别潜在的安全威胁。
- 确保网络设备的安全配置,防止未授权访问或配置更改。
- 收集审计数据,以满足合规性要求。
7. 云环境管理
在云计算环境中,SNMPv3 也被用于虚拟机和云服务的监控与管理。应用场景包括:
- 监测虚拟机的资源使用情况,如 CPU、内存和存储。
- 管理云网络资源的配置和性能,确保高可用性。
- 收集和分析云服务的运行数据,以优化性能和降低成本。
SNMPv3 的应用场景涵盖了从数据中心到企业网络、从 IoT 到云环境的多种管理需求。其强大的安全性和灵活性使其成为现代网络管理中不可或缺的工具。通过有效利用 SNMPv3,组织能够提高网络的可管理性、安全性和可靠性。
在 Windows 中,**简单网络管理协议(SNMP)**和 WMI-SNMP 提供程序 是两种重要的管理技术,用于监控和管理网络设备、硬件和系统的状态。以下是它们在 Windows 中的发展时间线:
1. 简单网络管理协议(SNMP)发展历史
SNMP 是一个用于网络设备管理的协议,它允许网络管理员监控和控制网络设备的状态,如路由器、交换机、服务器等。
-
1988年:
- SNMP v1 被首次引入,作为 Internet Engineering Task Force (IETF) 标准,旨在允许网络设备的远程监控和管理。
-
1993年:
- SNMP v2 发布,引入了一些改进,如更高效的错误处理、更强的性能和更丰富的安全选项。
-
1996年:
- SNMP v2c 引入,它是 SNMP v2 的一个变种,改进了 SNMP 的性能,但保持了较低的安全性。
-
1998年:
- SNMP v3 被发布,增强了安全性和认证,提供了加密和身份验证功能,确保数据传输的安全性和完整性。
-
2000年代:
- 在 Windows 操作系统中,SNMP 被广泛用于管理和监控计算机硬件、网络设备和打印机等。Windows 操作系统开始原生支持 SNMP 协议,提供 SNMP 服务供管理员使用。
-
Windows 2000 及以后的版本:
- Windows 2000、Windows XP 和 Windows Server 2003 提供了内置的 SNMP 服务,允许通过 SNMP 协议进行网络设备的监控和管理。管理员可以通过 SNMP 启用或禁用远程访问、获取设备信息和监控设备状态。
-
Windows Server 2008 和 2012:
- Windows 服务器操作系统继续优化 SNMP 服务,增强对 SNMP 设备的支持,进一步提升其性能和稳定性,适用于企业级网络管理。
-
Windows 10 和 Windows Server 2016:
- Windows 10 和 Windows Server 2016 中,SNMP 服务继续得到支持,但默认情况下被禁用。用户需要手动启用 SNMP 服务,以便进行设备监控。
-
现代 Windows 版本(Windows 11 和 Windows Server 2022):
- 在 Windows 11 和最新的 Windows Server 版本中,SNMP 服务依然存在,但它通常不是默认启用的,用户需要安装 SNMP 功能,并启用相关服务来进行网络设备管理。
2. WMI-SNMP 提供程序发展历史
WMI-SNMP 提供程序 是一个 Windows Management Instrumentation(WMI)与 SNMP 协议之间的桥梁,它允许用户通过 WMI 访问 SNMP 设备的数据。
-
1999年:
- WMI 被引入,作为微软的一项技术,旨在提供统一的管理和监控功能。它可以提供有关操作系统和硬件组件的详细信息,通过脚本和应用程序实现系统管理和监控。
-
2000年:
- Windows 2000 引入了 WMI 和其相应的提供程序,使管理员能够通过 WMI 接口访问 Windows 系统的管理信息,并通过远程管理接口查询和操作计算机。
-
Windows Server 2003 和 2008:
- 在 Windows Server 2003 和 2008 中,WMI 提供了对多种网络管理协议(包括 SNMP)的支持。为了进一步增强 Windows 系统的管理能力,微软发布了 WMI-SNMP 提供程序,使 Windows 系统能够通过 WMI 访问 SNMP 设备的数据。
-
2010年:
- Windows 7 和 Windows Server 2008 R2 中,WMI-SNMP 提供程序进一步改进,允许 Windows 系统通过 WMI 查询 SNMP 设备的状态,进而集成到更广泛的网络管理系统中。
-
2012年:
- Windows Server 2012 引入了一些针对 WMI 和 SNMP 协议的改进,增强了对跨平台网络设备的支持。WMI-SNMP 提供程序能够支持更高效的数据查询和系统监控。
-
2016年:
- 在 Windows Server 2016 中,WMI-SNMP 提供程序依旧被支持,用于桥接 SNMP 设备与 Windows 系统之间的管理数据。
-
现代版本(Windows 10/11 和 Windows Server 2022):
- 在现代 Windows 版本中,WMI-SNMP 提供程序依旧存在,但由于 SNMP 服务的某些局限性以及安全性问题,SNMP 的使用逐渐减少,更多管理员转向更先进的协议(如 RESTful APIs 和 PowerShell)来进行系统管理和设备监控。
RESTful APIs(Representational State Transfer)是基于 HTTP 协议的一种网络架构风格,用于创建可扩展和高效的网络服务。它简化了客户端与服务器之间的通信,特别适用于分布式系统。RESTful API 由于其简单性、灵活性和高效性,逐渐成为现代应用程序和服务的标准。
在 Windows 中,RESTful API 的发展历史可以追溯到 Web 服务和分布式计算的需求日益增加的时期。以下是 RESTful APIs 在 Windows 中的演变时间线:
1. 初期:Web 服务和 SOAP 协议(2000年代初期)
-
2000年代初期:
- 在早期,企业级应用程序通常使用 SOAP(Simple Object Access Protocol) 来创建 Web 服务。SOAP 是一个基于 XML 的协议,它是当时企业级 Web 服务的标准,适用于复杂的事务和消息传递。
-
2001年:
- W3C 发布了 Web Services Architecture,鼓励使用 SOAP 和其他标准(如 WSDL)进行 Web 服务开发。然而,SOAP 的复杂性和对带宽的要求使得它不适合所有应用场景,特别是那些对性能和简单性要求较高的应用。
2. REST 作为 Web 服务替代方案(2004年起)
-
2004年:
- Roy Fielding 在他的博士论文中提出了 REST(Representational State Transfer)的概念。REST 是一种设计风格,它要求网络服务通过 HTTP 协议进行操作,使用标准的 HTTP 方法(GET、POST、PUT、DELETE)来实现资源的 CRUD(创建、读取、更新、删除)操作。REST 提倡简洁、灵活且无状态的通信方式,因此在轻量级 Web 服务中逐渐得到推广。
-
2005年:
- REST 开始被越来越多的开发者和企业使用,尤其是在 Web 2.0 时代,它比传统的 SOAP 更加简洁和易于使用。越来越多的开发者开始采用 RESTful 风格来设计 Web 服务。
3. Windows 引入 RESTful API(2008年 - 2010年)
-
2008年:
- 微软开始在 Windows 平台上支持 RESTful API。尤其是在 Windows Server 2008 和 Windows 7 中,微软为开发者提供了对 RESTful Web 服务的支持。微软通过 ASP.NET 框架增强了对 RESTful API 的支持,并推出了 WCF(Windows Communication Foundation),使得开发人员能够通过 WCF 创建 RESTful 风格的 Web 服务。
-
2009年:
- Windows Azure(微软的云计算平台)推出,并开始大力支持 RESTful API。Azure 存储服务的访问便是通过 RESTful API 实现的,Azure Blob 存储、表存储和队列服务都提供了基于 HTTP 的 RESTful API 接口。
4. 进一步优化与普及(2010年 - 2015年)
-
2010年:
- 微软在 .NET Framework 4.0 中推出了 WCF REST 模式,使得开发者能够更加方便地通过 WCF 创建 RESTful Web 服务。
-
2012年:
- Windows 8 和 Windows Server 2012 提供了更多的支持,以便开发者能够构建和集成 RESTful API。Windows 8 和 Windows Server 2012 加强了对现代 Web 服务架构(如 RESTful API 和 WebSockets)的支持,支持跨平台通信。
-
2013年:
5. 现代化和云服务时代(2015年 - 至今)
-
2015年:
- Windows 10 推出,微软进一步加强了对 RESTful API 的支持。Windows 10 集成了 UWP(Universal Windows Platform),开发者可以通过 RESTful API 来开发跨设备应用,同时支持移动设备和桌面端。
-
2016年:
-
2018年:
- 微软推出 Microsoft Graph API,这是一个基于 RESTful 风格的 API,能够访问和操作微软云服务中的各种资源,如 Office 365、Azure AD、OneDrive 等。Microsoft Graph API 为企业级应用和服务提供了广泛的 API 接口,推动了 RESTful API 在微软生态系统中的普及。
-
2020年 - 至今:
- 微软的 Azure 云服务继续推广和加强对 RESTful API 的支持,开发者可以通过 RESTful API 与各种 Azure 服务进行交互。微软的 Azure SDK 和 Azure Functions 使得开发和部署 RESTful API 变得更加便捷。
- PowerShell 7 和 Azure PowerShell 为开发人员提供了更强大的命令行工具,支持通过 RESTful API 进行跨平台管理。
时间线:
- 2004年:REST 概念由 Roy Fielding 提出,成为 Web 服务的轻量级替代方案。
- 2008年:微软在 Windows 中开始支持 RESTful API,推动 ASP.NET 和 WCF 支持 REST。
- 2009年:Windows Azure 云平台发布,全面支持 RESTful API。
- 2010年:.NET Framework 4.0 引入 WCF REST 模式。
- 2012年:Windows 8 和 Windows Server 2012 加强对 RESTful API 的支持。
- 2013年:ASP.NET Web API 发布,成为构建 RESTful API 的标准框架。
- 2015年:Windows 10 和 UWP 推出,跨平台支持 RESTful API。
- 2016年:ASP.NET Core 发布,进一步提升对 RESTful API 的支持。
- 2018年:Microsoft Graph API 发布,推动 RESTful API 在微软生态系统中的应用。
- 2020年 - 至今:微软持续推动 Azure 云平台和其他服务中的 RESTful API 使用,支持跨平台开发。
随着时间的推移,RESTful API 在 Windows 平台上的使用逐渐成为标准,特别是在云服务、跨平台应用和现代 Web 开发中得到了广泛的应用。它已成为开发者构建和集成 Web 服务的首选方式,提供了高度灵活和可扩展的解决方案。
-
- 在现代 Windows 版本中,WMI-SNMP 提供程序依旧存在,但由于 SNMP 服务的某些局限性以及安全性问题,SNMP 的使用逐渐减少,更多管理员转向更先进的协议(如 RESTful APIs 和 PowerShell)来进行系统管理和设备监控。
时间线:
- 1988年:SNMP v1 发布,开启了网络设备管理的新篇章。
- 1993年:SNMP v2 发布,增强了协议的功能和性能。
- 1996年:SNMP v2c 发布,成为主流协议。
- 1998年:SNMP v3 发布,提供了安全功能。
- 1999年:WMI 引入,作为统一的管理框架。
- 2000年:Windows 2000 引入 SNMP 和 WMI,支持 SNMP 协议的管理。
- 2003年:Windows Server 2003 引入 WMI-SNMP 提供程序,增强跨平台设备管理能力。
- 2008年:Windows Server 2008 加强了 WMI-SNMP 提供程序的功能。
- 2012年:Windows Server 2012 改进了对 SNMP 和 WMI 的支持。
- 2016年:Windows Server 2016 延续 WMI-SNMP 提供程序,进一步优化跨平台设备管理。
- 现代版本(Windows 10/11 和 Windows Server 2022):SNMP 逐步退役,WMI-SNMP 提供程序继续支持,但更多管理员选择其他协议进行网络管理。
这种演变展示了 SNMP 协议和 WMI-SNMP 提供程序在 Windows 操作系统中的演进过程,从最初的基本设备管理到今天的高效管理功能,适应了日益增长的网络设备管理需求。
使用 DISM(部署映像服务和管理)命令来查询、开启或关闭 简单网络管理协议(SNMP) 和 WMI-SNMP 提供程序,通常需要管理权限来执行。以下是使用 DISM 命令管理 SNMP 和 WMI-SNMP 提供程序的具体操作。
1. 查询 SNMP 和 WMI-SNMP 提供程序的状态
可以使用 DISM 命令来查询是否已安装 SNMP 和 WMI-SNMP 提供程序。
查询 SNMP 的状态:
dism /online /get-features /format:table | findstr /i "SNMP"
这条命令会列出系统中是否启用了 SNMP 功能。如果有启用,会显示类似以下的结果:
SNMP (Enabled)
查询 WMI-SNMP 提供程序的状态:
dism /online /get-features /format:table | findstr /i "WMI-SNMP"
该命令用于检查 WMI-SNMP 提供程序是否启用。
2. 开启 SNMP 和 WMI-SNMP 提供程序
如果 SNMP 或 WMI-SNMP 提供程序未启用,可以使用 DISM 命令来启用它们。
启用 SNMP 功能:
dism /online /enable-feature /featurename:SNMP /all /norestart
这条命令会启用 SNMP 功能,/all 参数确保所有依赖项都被启用,/norestart 防止自动重启。
启用 WMI-SNMP 提供程序:
dism /online /enable-feature /featurename:WMI-SNMP /all /norestart
这条命令会启用 WMI-SNMP 提供程序。
3. 关闭 SNMP 和 WMI-SNMP 提供程序
如果不再需要 SNMP 或 WMI-SNMP 提供程序,可以使用 DISM 命令将其禁用。
禁用 SNMP 功能:
dism /online /disable-feature /featurename:SNMP /norestart
这条命令会禁用 SNMP 功能。
禁用 WMI-SNMP 提供程序:
dism /online /disable-feature /featurename:WMI-SNMP /norestart
这条命令会禁用 WMI-SNMP 提供程序。
4. 重启计算机
有时更改设置后需要重启计算机才能生效。可以使用以下命令重启计算机:
shutdown /r /f /t 0
- 查询:使用
dism /online /get-features /format:table和findstr命令来检查 SNMP 或 WMI-SNMP 提供程序的状态。 - 启用:使用
dism /online /enable-feature命令启用 SNMP 和 WMI-SNMP 提供程序。 - 禁用:使用
dism /online /disable-feature命令禁用 SNMP 和 WMI-SNMP 提供程序。
这些命令可以帮助你方便地管理 Windows 系统中的 SNMP 和 WMI-SNMP 提供程序。

在 Windows PowerShell 或 .cmd 批处理脚本中配置 SNMP 服务及其安全选项,涉及配置 SNMP 服务的一些常见参数,如接受的社区名称、社区权限、陷阱接收设置等。以下是一些可在 PowerShell 或批处理文件中使用的配置方法。
1. 配置 SNMP 服务的安全选项
要配置 SNMP 服务的属性(如社区名称、权限、接受来自的主机等),可以通过修改注册表或者使用 snmp 配置工具来实现。下面是一些常见的配置方法。
通过 PowerShell 配置 SNMP 服务
-
配置社区名称(例如 public): 使用 PowerShell 可以修改注册表来设置 SNMP 服务的社区名称以及权限。
powershellCopy Code# 配置接受的社区名称 public 和读写权限 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\SNMP\Parameters\ValidCommunities" -Name "public" -Value 4其中:
4表示 "读写" 权限(其他常见值:1 表示只读)。
-
添加接受来自特定主机的数据包(例如 localhost, 115.25.200.43, 115.25.200.36): 可以在注册表中配置允许接收 SNMP 数据包的 IP 地址。
powershellCopy Code# 添加接受来自 localhost 的 SNMP 数据包 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\SNMP\Parameters\PermittedManagers" -Name "localhost" -Value "127.0.0.1" # 添加来自 115.25.200.43 和 115.25.200.36 的 SNMP 数据包 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\SNMP\Parameters\PermittedManagers" -Name "115.25.200.43" -Value "115.25.200.43" Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\SNMP\Parameters\PermittedManagers" -Name "115.25.200.36" -Value "115.25.200.36" -
配置发送身份验证陷阱(U): SNMP 的身份验证通常通过
Trap配置进行。powershellCopy Code# 配置发送身份验证陷阱 Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\SNMP\Parameters" -Name "TrapTarget" -Value "192.168.1.100"其中
TrapTarget设置为发送 SNMP 陷阱的目标 IP 地址。
2. 通过 CMD 批处理配置 SNMP
在 .cmd 批处理文件中,可以使用 reg add 命令修改注册表配置 SNMP 服务。
-
配置社区名称:
cmdCopy Codereg add "HKLM\SOFTWARE\Microsoft\SNMP\Parameters\ValidCommunities" /v public /t REG_DWORD /d 4 /f -
配置允许的主机 IP 地址:
cmdCopy Codereg add "HKLM\SOFTWARE\Microsoft\SNMP\Parameters\PermittedManagers" /v localhost /t REG_SZ /d 127.0.0.1 /f reg add "HKLM\SOFTWARE\Microsoft\SNMP\Parameters\PermittedManagers" /v 115.25.200.43 /t REG_SZ /d 115.25.200.43 /f reg add "HKLM\SOFTWARE\Microsoft\SNMP\Parameters\PermittedManagers" /v 115.25.200.36 /t REG_SZ /d 115.25.200.36 /f -
配置 SNMP 发送身份验证陷阱:
cmdCopy Codereg add "HKLM\SOFTWARE\Microsoft\SNMP\Parameters" /v TrapTarget /t REG_SZ /d 192.168.1.100 /f
3. 其他配置项
可以根据具体需要添加、编辑、删除这些配置项:
- 添加(①):使用
reg add命令添加新的社区名称或主机 IP。 - 编辑(E):通过
Set-ItemProperty或reg add命令修改现有配置。 - 删除(R):使用
reg delete删除配置项。
reg delete "HKLM\SOFTWARE\Microsoft\SNMP\Parameters\ValidCommunities" /v public /f
4. 配置 SNMP 服务的启动
在 PowerShell 中,你可以启动或停止 SNMP 服务。
启动 SNMP 服务:
Start-Service -Name "SNMP"
停止 SNMP 服务:
Stop-Service -Name "SNMP"
设置 SNMP 服务为自动启动:
Set-Service -Name "SNMP" -StartupType Automatic
- 配置社区名称和权限:通过 PowerShell 或批处理修改注册表。
- 配置接收来自特定主机的 SNMP 数据包:修改注册表中的
PermittedManagers键。 - 配置发送 SNMP 陷阱:设置
TrapTarget目标 IP。 - 管理 SNMP 服务:使用 PowerShell 命令启动、停止、设置服务启动类型。
通过这些方法,你可以灵活地配置 SNMP 服务的各项参数,以便于管理 SNMP 网络监控系统。
1. 简单网络管理协议(SNMP,Simple Network Management Protocol)
名称:
SNMP 是一种用于在 IP 网络中管理设备的标准协议。其全称为 Simple Network Management Protocol,直译为“简单网络管理协议”。
作用与功能:
SNMP 允许网络管理员通过管理信息库(MIB)来监视和控制网络设备,如路由器、交换机、打印机和服务器等。它定义了一种通信协议,用于在网络中的管理站与被管理设备之间交换管理信息。
- 监控设备状态:通过 SNMP,网络管理员可以查询设备的当前状态,例如 CPU 使用率、内存使用量、磁盘空间等。
- 配置设备参数:管理员可以通过 SNMP 更改设备的配置,例如改变网络接口的 IP 地址或启用/禁用设备的功能。
- 错误检测与报警:SNMP 支持生成设备的报警信息,如设备故障或超载,及时通知管理员。
工作原理:
SNMP 使用客户端-服务器架构:
- 管理站(如 Network Management System,NMS)是 SNMP 客户端,负责查询设备状态、发送配置命令等。
- **代理(Agent)**是 SNMP 服务器,负责收集设备的管理信息并响应管理站的请求。
SNMP 是基于请求-响应模式的:
- Get:管理站向代理请求获取设备信息。
- Set:管理站向代理发送命令以修改设备设置。
- Trap:代理主动向管理站发送错误信息或事件通知。
应用场景:
- 网络设备管理:用于监控和管理路由器、交换机、防火墙等网络设备的性能。
- 服务器监控:用于收集和管理服务器的性能数据,如 CPU 使用率、内存使用量等。
- 打印机管理:许多网络打印机支持 SNMP 用于状态监控、错误报告和配置更新。
2. WMI-SNMP 提供程序(WMI-SNMP Provider)
名称:
WMI-SNMP 提供程序 是一种 Windows 管理规范(WMI)接口与 SNMP 协议的桥接机制,用于让 Windows 系统能够与 SNMP 网络管理工具进行交互。
作用与功能:
WMI-SNMP 提供程序的主要作用是将 WMI 信息暴露给 SNMP 管理工具,使 Windows 系统能够像 SNMP 设备一样被管理。这是因为,Windows 系统本身不直接支持 SNMP,但通过 WMI-SNMP 提供程序,可以让 SNMP 管理站监控和配置 Windows 设备。
- 提供 Windows 系统信息:通过 WMI,Windows 系统可以提供有关硬件(如 CPU、内存、磁盘)和软件(如应用程序、操作系统状态)等的详细信息。
- 与 SNMP 管理系统兼容:WMI-SNMP 提供程序允许 SNMP 管理工具通过 SNMP 协议查询 WMI 数据。
- 桥接 WMI 与 SNMP:SNMP 是网络管理的标准协议,而 WMI 是 Windows 平台下的管理接口,WMI-SNMP 提供程序则充当了两者之间的中介。
工作原理:
WMI-SNMP 提供程序在 Windows 系统上作为 SNMP 代理运行,允许 SNMP 管理工具通过 SNMP 请求来访问存储在 Windows 系统中的管理信息。该提供程序通过 SNMP 代理与 SNMP 管理站进行通信,查询 WMI 数据并返回相关信息。
- 当 SNMP 管理工具发起一个请求时,WMI-SNMP 提供程序会将 SNMP 请求转换为相应的 WMI 查询,获取系统信息。
- 通过这种方式,SNMP 管理工具能够访问 Windows 系统上通过 WMI 提供的信息。
应用场景:
- Windows 系统监控:通过 SNMP 协议集成到现有的 SNMP 网络管理系统中,监控 Windows 服务器、工作站的性能、资源使用情况和事件。
- 跨平台兼容性:在企业环境中,管理站可能同时监控多种操作系统的设备,包括 Linux、Unix 和 Windows。WMI-SNMP 提供程序使得 Windows 系统可以在使用 SNMP 的跨平台环境中集成。
- 集成 SNMP 与现有管理平台:如果企业的网络管理系统已经是基于 SNMP 的,WMI-SNMP 提供程序允许将 Windows 系统信息无缝集成到现有的管理平台。
总结对比:
| 特性 | SNMP | WMI-SNMP 提供程序 |
|---|---|---|
| 全称 | Simple Network Management Protocol (简单网络管理协议) | WMI-SNMP Provider (WMI-SNMP 提供程序) |
| 主要作用 | 网络设备管理与监控 | 将 Windows 系统管理数据暴露给 SNMP 管理系统 |
| 工作协议 | SNMP 协议(请求-响应模式) | SNMP 与 WMI 的桥接,通过 SNMP 查询 WMI 数据 |
| 适用设备 | 网络设备、路由器、交换机、打印机等 | 主要用于 Windows 系统(服务器、工作站等) |
| 应用场景 | 网络管理、服务器监控、打印机管理等 | 将 Windows 系统数据集成到 SNMP 管理系统中 |
这些协议和工具都与网络管理密切相关,SNMP 适用于各种网络设备的管理,而 WMI-SNMP 提供程序则是让 Windows 系统也能在 SNMP 环境中被管理的一个关键桥梁。
在 Windows 中,管理 简单网络管理协议 (SNMP) 和 WMI-SNMP 提供程序 可以通过命令行工具来实现,通常涉及启用或禁用 SNMP 服务、查询 SNMP 配置等。以下是有关如何通过命令行启用、禁用和验证 SNMP 服务的说明:
1. 查询 SNMP 服务状态
要查看 SNMP 服务是否已启用或禁用,您可以使用 Get-Service 命令。此命令适用于 Windows PowerShell:
Get-Service -Name SNMP
如果 SNMP 服务已启用,它将显示其状态(Running 或 Stopped)。
2. 启用 SNMP 服务
如果 SNMP 服务尚未启用,您可以通过以下步骤启用它:
a. 通过 PowerShell 启用 SNMP 服务
Enable-WindowsOptionalFeature -Online -FeatureName SNMP
b. 使用 sc 命令启动 SNMP 服务
sc config SNMP start= auto
sc start SNMP
这里
sc config SNMP start= auto是设置 SNMP 服务为自动启动,sc start SNMP启动 SNMP 服务。
3. 禁用 SNMP 服务
要禁用 SNMP 服务,您可以使用以下命令:
a. 使用 PowerShell 禁用 SNMP 服务
Disable-WindowsOptionalFeature -Online -FeatureName SNMP
b. 使用 sc 命令停止 SNMP 服务
sc stop SNMP
c. 使用 sc 命令将 SNMP 服务设置为禁用
sc config SNMP start= disabled
4. 查询 WMI-SNMP 提供程序状态
要查看 WMI-SNMP 提供程序的状态,您可以使用以下命令查询:
Get-WmiObject -Namespace "root\snmp\agent" -Class SNMP_Community
如果 SNMP WMI 提供程序已正确安装并配置,该命令将返回 SNMP 配置信息。
5. 配置 SNMP 社区字符串
要查询或更改 SNMP 社区字符串,您可以使用 netsh 命令,或者通过注册表来配置。您也可以使用以下命令来配置 SNMP 服务的社区字符串:
Set-Service -Name SNMP -StartupType Manual
6. 验证 SNMP 是否工作
可以使用以下命令验证 SNMP 服务是否工作:
a. 使用 PowerShell 查询 SNMP 服务的配置信息
Get-WmiObject -Namespace "root\snmp\agent" -Class SNMP_Community
这会返回 SNMP 社区的信息,确保它被正确配置并能够响应查询。
b. 使用 snmpwalk 工具进行 SNMP 查询
如果您在计算机上安装了 SNMP 工具(如 snmpwalk),可以使用它来验证 SNMP 服务是否正常工作:
snmpwalk -v 2c -c public 127.0.0.1
这将向本地计算机发出 SNMP 查询,并返回一些设备的 SNMP 配置信息。如果返回成功,表示 SNMP 服务已正确工作。
- 启用 SNMP 服务:可以通过 PowerShell 或
sc命令来启动 SNMP 服务。 - 禁用 SNMP 服务:同样通过 PowerShell 或
sc命令来禁用 SNMP 服务。 - 验证 SNMP 配置和状态:使用 PowerShell 命令查询 SNMP 服务的状态,或者使用
snmpwalk工具进行验证。 - 配置 SNMP 社区字符串:通过注册表或 PowerShell 来配置 SNMP 服务的社区字符串。
通过这些命令,您可以灵活地管理和验证 SNMP 服务及其相关配置。

浙公网安备 33010602011771号