如前文所述,WMI只是提供数据,客户端到底要提取多少数据是由 hinv rule指定的,这个rule在客户端被编译到CCM/policy/machine/actualConfig 名称空间下的 inventoryDataitem 类实例中。 这个rule本身又是由SMS_def.mof来定义的。实际上,WMI提供的很多数据SMS_def.mof中都没有涵盖,已经涵盖的也很多是report(disable) 状态,也就是实际不收集的。
1. 可以通过文本编辑方式,或者 mof manager来编译 SMS_def.mof来enable这些信息的收集。
2. 对比WMI类和实例的定义和SMS_def.mof (SMS2003) 或者 Configuration.mof (SCCM 2007) 中的数据类的定义即可简单的扩展。
例如 Win32_printer类虽然已经在mof文件中有了,但是WMI实际有多得多的其它信息。当然,如果要添加这些信息的收集,也要修改报告类部分
再一个例子是 Win32_product 它是 Windows installer provider提供的信息,可用于辅助add/remove programs 中提取的信息。这个类因为已经在WMI中了,所以不需要再在mof文件中定义Windows installer provider,直接定义数据类和报告类即可。下面还是 admin guide中的样例,这里只写了数据类部分,需要的朋友可以自行完成报告类部分,或者联系我。
#pragma namespace (".//root//CIMv2//sms")
[ SMS_Report (TRUE),
SMS_Group_Name ("Windows Installer Installed Products"),
SMS_Class_ID ("MICROSOFT|MSI_PRODUCTS|1.0") ]
class Win32_Product : SMS_Class_Template
{
[SMS_Report(TRUE), key]
string IdentifyingNumber;
[SMS_Report(TRUE), key]
string Name;
[SMS_Report(TRUE)]
string Vendor;
[SMS_Report(TRUE), key]
string Version;
[SMS_Report(TRUE)]
string PackageCache;
[SMS_Report(TRUE)]
string InstallDate;
[SMS_Report(TRUE)]
string InstallLocation;
};