MOF (管理对象格式)是WBEM工业标准的一部分,微软的WBEM实现就是WMI。 MOF定义了文本文件如何描述计算机管理信息,对象如何定义计算机管理信息以及相关的结构。 hinv client agent 缺省从 WMI的CIMV2名称空间中提取数据,这个agent并不提取CIMV2的所有数据,而只提取WMI的CCM/policy/machine/actualConfig 名称空间中的hinv rule中指定的信息。客户端将这些规则存储在InventoryDataItem类中。hinv rule在 SMS_def.mof中定义, 这个文件的信息会被转换为policy发送给客户端。CIMV2 中的类实例叫数据类,它们包括了hinv agent收集的数据。CCM/policy/machine/actualConfig 中的类实例叫报告类,它包括了hinv agent实际会收集并report给 server的数据。
Hinv agent扫描 CIMV2/SMS 来查找找被标记为report的类,然后到CIMV2中去找这些类,WMI provider会提供这些类的实例的数据。如果没有用provider来收集数据,数据通常是被静态定义为类的实例,静态实例可以通过脚本,程序,或者编译MOF文件来修改。Hinv agent会对比从 CIMV2/SMS/delta 中的数据和收集到的数据来确定数据是否发生了更改,以及是否应该report。如果full inventory或者有一个重新同步要求,所有收集到的数据都被report
使用MOF来存储静态数据,首先必须要定义数据类和数据实例
#pragma namespace (".//root//CIMv2")
class UserInfo
{
[key]
string user;
string office;
string phone_number;
};
instance of UserInfo --------下面是定义数据实例,必须和类名相同
{
user = "Frank Guan 1";
office = "People Square build 1";
phone_number = "021-87654321";
};
instance of UserInfo
{
user = "Frank Guan 2";
office = "People Square build 2";
phone_number = "021-12345678";
};
编辑完成后,存储为xxx.mof文件,然后使用 mofcomp.exe xxx.mof 编译即可将以上信息加入到WMI中,使用wbemtest或者CIMStudio等工具检查和验证。系统要收集这些信息,需要在CIMV2/SMS中加入报告类名称和对应的数据结构,如下。 在SMS 2003中,将上下两段 MOF文件都加入 SMS_def.mof 中。在SCCM 2007 中将上下两端分别加入 Configuration.mof (数据类和实例) 和 SMS_def.mof(报告类)就完成了对静态数据MOF扩展的收集。 SCCM 2007 和 SMS 2003 在MOF的处理上只是小改进,并无大的不同,请看我以前的文章。
#pragma namespace (".//root//CIMv2//sms")
[ SMS_Report (TRUE),
SMS_Group_Name ("UserInfo MOF")
--- 这个是在DB中创建表和视图使用的名称: V_GS_UserInfo_MOF0 视图和 Userinfo_MOF_Data表
SMS_Class_ID ("xxx|UserInfo|1.0")]
--- 这个是WMI类使用的名称 SMS_G_System_xxx_userinfo_1_0
class UserInfo : SMS_Class_Template - 报告类 Userinfo 也应该和上面的数据类定义中的类名相同
{
[SMS_Report(TRUE), key]
string user;
[SMS_Report(TRUE)]
string office;
[SMS_Report(TRUE)]
string phone_number;
};
然后做hinv,在客户端的inventoryagent.log中搜 Collection: ....FROM UserInfo 如果数据类和报告类名称不同,就会有collection: class xxxx does not exist out
Server 端的Dataldr.log中搜 group Name : UserInfo MOF... CSqlSchema::CreateProcedure 然后db中就有了 V_GS_UserInfo_MOF0 视图和 Userinfo_MOF_Data表