使用MOF来扩展hardware inventory -- 静态数据

来源:互联网 发布:linux 正则匹配文件名 编辑:程序博客网 时间:2024/06/03 19:29

MOF (管理对象格式)是WBEM工业标准的一部分,微软的WBEM实现就是WMI MOF定义了文本文件如何描述计算机管理信息,对象如何定义计算机管理信息以及相关的结构。 hinv client agent 缺省从 WMICIMV2名称空间中提取数据,这个agent并不提取CIMV2的所有数据,而只提取WMICCM/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

 

 

 

原创粉丝点击