通用信息模型

通用信息模型 (CIM) 是一个可扩展并面向对象的数据模型,含有与企业各个部门有关的信息。 CIM 是由分布式管理任务组 (DMTF) 维护的跨平台标准。 通过 WMI,开发人员可以使用 CIM 来创建表示硬盘驱动器、应用程序、网络路由器甚至用户定义的技术(例如联网空调)的类。 通过查看和更改 CIM 类,管理员可以控制企业的各个方面。 例如,管理员可以查询表示桌面工作站的 CIM 类实例, 然后,管理员可以运行一个脚本来修改该 CIM 工作站实例。 WMI 会将对工作站 CIM 类实例所做的任何更改转换为对实际工作站所做的更改。

CIM 是一种独立于语言的编程模型,它使用面向对象的技术来描述企业。 使用三个级别的父/子继承,CIM 可以描述企业的一般和特定方面。 CIM 还使用一种称为“关联”的技术将企业模型的不同部分链接在一起,并使用架构来区分不同的管理环境。

CIM 旨在提供管理环境中逻辑和物理对象的一致视图。 CIM 使用称为“类”的面向对象的构造来表示托管对象。与 C++ 或 COM 类一样,CIM 类可以包含用于描述数据的属性和用于描述行为的方法。 与 COM 类集一样,CIM 不会关联到任何平台。 但是,WMI 包含 CIM 的一个扩展,该扩展描述 Microsoft Windows 操作系统平台。

CIM 定义三个级别的类:

  • 核心

    核心类代表适用于所有管理区域的托管对象。 这些类提供用于分析和描述托管系统的基本词汇。 __Parameters__SystemSecurity 类是核心类的示例。

  • 通用

    通用类代表适用于特定管理区域的托管对象。 但是,通用类独立于特定的实现或技术。 通用类是核心类的扩展。 CIM_UnitaryComputerSystem 类是通用类的示例。

  • 扩展

    扩展类代表对通用类提供特定于技术的补充的托管对象。 扩展类通常适用于特定的平台,例如 UNIX 或 Microsoft Win32 环境。 Win32_ComputerSystem 类是扩展类的示例。

开发人员可以从一个类派生另一个类。 派生类代表父类的特殊情况,它继承父类的所有属性和方法。 例如,Win32_ComputerSystem 继承自 CIM_UnitaryComputerSystem。 可以使用系统属性 __Derivation、__Dynasty 和 __SuperClass 来确定继承关系。 __Derivation 系统属性是一个字符串数组,列出级别最高可达根类(也包含在 __Dynasty 中)的整个继承链。 __SuperClass 系统属性显示当前类的直属父级。

WMI 还支持关联。 关联是两个或更多个不同 WMI 类之间的关系。 例如,正在运行的工作站通常有一个处理器。 WMI 关联类 Win32_ComputerSystemProcessor 将工作站类 Win32_ComputerSystem 与处理器类 Win32_Processor 相关联。 但是,关联类不一定会将两个依赖类关联在一起。 事实上,关联类的主要用途是显示不一定相互依赖的类之间的关系。 有关详细信息,请参阅声明关联类

最后,WMI 支持架构的概念。 在 WMI 的上下文中,架构是一组描述特定管理环境的类。 Microsoft Windows 软件开发工具包 (SDK) 使用两种架构:CIM 架构和 Win32 架构。 CIM 架构类名以 CIM_ 开头,Win32 架构类名以 Win32_ 开头。 CIM 架构包含核心类和通用类的定义,而 Win32 架构包含通用于 Win32 环境的扩展类的定义。 但是,第三方供应商可以创建自己的架构来描述特定于供应商的要求。 由于架构设计为可无限扩展,开发人员始终可以添加新类来描述现有环境中的新托管对象。 但是,为简单起见,大多数供应商会选择创建从 CIM 或 Win32 架构继承属性的架构。