none
使用NOIDMIF来扩展hardware inventory RRS feed

  • 常规讨论

  • http://blogs.technet.com/configurationmgr/archive/2010/03/25/customizing-hardware-inventory-in-configuration-manager-2007-using-noidmif-files.aspx

    上面的博文已经对SCCM 中使用NOIDMIF来扩展 hardware inventory说的比较详细了。这里我们再多说明一下。

     

    MIF 是桌面管理工业标准的一部分,MIF标准定义了文本文件如何被用来描述计算机管理信息。作为工业标准,很多程序都会将信息存储在MIF中。SMS / SCCM可以收集MIF文件的信息并存储到 site database中,可以用这个方法来处理inventory数据。

    对于SMS / SCCM来说,没有说明的话,MIF文件指的就是NOIDMIF 文件。如名字所述,这种文件没有ID (数据的唯一标示符),系统动将NOIDMIF文件中得到的数据和收集到该MIF文件的计算机相关联。

    SMS / SCCM也支持IDMIF,这种MIF文件包括唯一标示符,它和被收集到IDMIF文件的计算机并不相关,IDMIF一般用于收集外设的inventory信息,例如扫描仪等,这种数据被存储在 site database的单独的表中。IDMIF可以在 site database中创建新架构,或者更新现有架构。例如:用于在 site database中创建用于reporting的新表,添加和计算机并不紧密相关的资产管理信息,例如 router,switch, 这种数据不太适合NOIDMIF和MOF扩展。 当然这类数据的inventory也有一些第三方工具提供支持。

    对于MIF的处理,在SMS 2003 和 SCCM 2007 中没有任何区别,以下就不提 SMS 2003 高级客户端和SCCM 2007 客户端之分了,直接说客户端。

     
    NOIDMIF文件在客户端的缺省存放位置在 %WinDir%\system32\CCM\inventory\Noidmifs,这个路径存储在注册表 HKLM\software\microsoft\SMS\Client\Configuration\Client Properties\NOIDMIF Directory 下。 如果NOIDMIF文件中定义的类在server中并不存在,site server的 inventory data loader就会在现有架构上创建新类,以后hardware inventory (下面就简写做hinv了) client agent做inventory 时就会包括处理该NOIDMIF文件中的类。hinv client agent每次inventory都会收集NOIDMIF文件并处理其中的信息,如果这个文件消失了,扩展的类和属性就会被从 site database中删除。所以NOIDMIF是一种很干净的方式。
     

    样例:将以下内容用文本编辑器存放到一个后缀为MIF的文本文件中。

    Start Component

    Name = "Asset Information"

    Start Group

    Name = "Company A Asset Numbers"

    ID = 1

    Class = "AssetNumbers"

    Key = 1

    Start Attribute

    Name = "Computer Asset Number"

    ID = 1

    Type = String(10)

    Value = "1234567890"

    End Attribute

    End Group

    End Component
     

    说明:

    可以使用 MIFGen工具来创建NOIDMIF文件,也可以用文本编辑器手工编辑。其中的主要部分如下:

    1. 创建NOIDMIF首先要添加一个component和名称

    Start component   

    Name = "Asset Information"

    2. 创建一个新类和显示名

    Start Group

    Name = "Company Asset Numbers"

    上面的这个name 就是最后在 SMS/SCCM admin console中的 resource explorer 中显示出来的对应这个类的字符串名称。当系统第一次处理这个类时,会创建 WMI 类 :SMS_G_System_AssetNumbers (SMS_G_Sytem + 上面的 start group开始这段中的 “Class =” 这里的值),在 site server 数据库中创建 Company Asset Numbers 表(就是上面的 Group name) 和 V_GS_Company_Asset_Numbers0 视图。

    3. ID是每个group的编号,Class用于定义WMI类名,key属性是一个类的不同实例之间的唯一标示符。如果有多个实例,必须有一个key属性,否则后续实例信息会覆盖前面实例的信息。32位系统上,如果未定义key属性,则所有属性都被作为key属性来处理

    ID = 1

    Class = "AssetNumbers"

    Key = 1

    4. 下面是给上面定义的这个类添加第一个属性。必须包含属性名称,ID,类型,和一个有效的数值。ID号在group内必须唯一。系统只支持3种数据类型: integer, string,以及被特别格式化过的 DateTime 字符串。

    Start Attribute

    Name = "Computer Asset Number"

    ID = 1

    Type = String(10)

    Value = "1234567890"

    End Attribute

    然后确认 primary site server上,hinv agent 属性设置中勾选了 “Collect NOIFMIF files”,然后就等待下一次hinv cycle的到来吧,或者在客户端手工触发这个动作。然后再稍等,就能在server端看到数据了。

    2010年3月31日 13:46
    版主

全部回复

  • 然后手工触发,或者静待 hinv 发生。然后再 admin console中打开这个机器的 resource explorer  看看是不是多了 Computer Asset numbers 这个条目? 其中应该有一个列 Computer Asset number,值是1234567890

    时间有限,就不抓图贴图了,大家如果有兴趣,请自行测试。ok,今天就到这里,置顶一个月 :-)

    2010年3月31日 13:52
    版主