none
使用MOF来扩展hardware inventory - 动态数据 RRS feed

  • 常规讨论

  • 
    MOF扩展用于动态数据时和用于静态数据时很相似,除了一点:不包括数据本身(也就是数据类和数据类实例),而是由 WMI provider 从WMI中提取信息。报告类部分和处理静态数据时相同,同样的定义,加入SMS_def.mof
    
    
    对于数据类部分:
    1. 对于客户端,在SMS 2003中数据类部分(也在SMS_def.mof中)必须分发给所有client并编译,SCCM2007中,数据类定义(包括WMI provider)是在configuration.mof中,会自动被编译为policy发送给client,所以在客户端不需要做任何事情。如果使用了第三方的WMI provider,这个provider也需要分发。
    2. 定义数据类
    3. 扩展SMS_def.mof,为上面收集的数据来加入一个报告类
    
    其它:
    
    1. Provider 只需要定义一次. SMS 2003中是在 SMS_def.mof中,SCCM中是在 Configuration.mof中
    2. 标准provider,例如WMI自带的registry provider不需要在SMS_def.mof 中再重新定义,里面已经有了
    
    最常用的WMI provider是 registry provider,也就是提取注册表值,它是WMI自带的。registry provider又分为 property provider,instance provider,event provider 三类。 下面的例子是 SMS 2003 admin guide中的样例,使用了property provider,也就是提取某个特定的注册表键的实际值。
    
    #pragma namespace("\\\\.\\root\\CIMv2")
    // Registry property provider
    instance of __Win32Provider as $PropProv
    {
    Name ="RegPropProv" ;
    ClsID = "{72967901-68EC-11d0-B729-00AA0062CBB7}";
    ImpersonationLevel = 1;
    PerUserInitialization = "FALSE";
    };
    instance of __PropertyProviderRegistration
    {
    Provider =$PropProv;
    SupportsPut =TRUE;
    SupportsGet =TRUE;
    };
    
    ----------------------------------------------以上部分是property provider的定义,不用再重新定义
    [DYNPROPS]
    class Power_Mgmt
    {
    [key]
    string index = "current";
    sint32 CurrentPowerPolicy;
    };
    
    --------------------------------------------- 以上部分是数据类的定义:电脑使用的power schema是什么样的。
    [DYNPROPS]
    instance of Power_Mgmt
    {
    [PropertyContext("local|HKEY_CURRENT_USER\\Control
    Panel\\PowerCfg|CurrentPowerPolicy"),
    Dynamic, Provider("RegPropProv")]
    CurrentPowerPolicy;
    };
    
    ---------------------------------------------以上部分是数据类实例的定义,也就是指定从注册表的什么位置来去这个值。
    
    #pragma namespace ("\\\\.\\root\\CIMv2\\sms")
    [ SMS_Report (TRUE),
    SMS_Group_Name ("Power Management"),
    SMS_Class_ID ("MICROSOFT|POWER_MGMT|1.0") ]
    class Power_Mgmt : SMS_Class_Template
    {
    [SMS_Report(TRUE),key]
    string index;
    [SMS_Report(TRUE)]
    sint32 CurrentPowerPolicy;
    };    ------------------------------------  这部分是报告类
    
     
    
    下面的例子也是 Admin guide中的样例,是使用 instance provider,是提取注册表的键本身的名称
    
    #pragma namespace("\\\\.\\root\\CIMv2")
    // Instance provider
    instance of __Win32Provider as $InstProv
    {
    Name = "RegProv" ;
    ClsId = "{fe9af5c0-d3b6-11ce-a5b6-00aa00680c3f}" ;
    };
    instance of __InstanceProviderRegistration
    {
    Provider = $InstProv;
    SupportsPut = TRUE;
    SupportsGet = TRUE;
    SupportsDelete = FALSE;
    SupportsEnumeration = TRUE;
    };
    
    -----------------------------------------------以上是 instance provider的定义,系统已经有了,不需要添加
    [dynamic, provider("RegProv"),
    ClassContext("local|HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows
    NT\\CurrentVersion\\Hotfix")
    ]
    
    ----------------------------------------------以上定义了数据类,也就是读取...hotfix 下这些KBxxxxx本身的名称
    class HotFixes
    {
    [key]
    string QNumber;
    [PropertyContext("Installed")]
    uint32 Installed;
    };
    
    ---------------------------------------------以上定义了数据类实例的值。 “installed" 意思就是只要这个注册表位置出现了KBxxxxx就说明这个KB补丁已经安装了。
    
     
    
    下面是报告类的定义
    
    #pragma namespace("\\\\.\\root\\CIMv2\\sms")
    [SMS_Report(TRUE),
    SMS_Group_Name("Hotfixes"),
    SMS_Class_ID("MICROSOFT|HOTFIXES|1.0")]
    class HotFixes : SMS_Class_Template
    {
    [SMS_Report(TRUE),key]
    string QNumber;
    [SMS_Report(TRUE)]
    uint32 Installed;
    };
    
    
    2010年4月13日 7:51
    版主

全部回复

  • 
    通过打包工具,例如SMS installer,Wise installation studio,installshield 等,以及脚本,程序,都可以操作注册表,所以绝大部分在客户端的操作,我们都可以用注册表键值来记录操作过程信息和结果。
    
    然后用SCCM2007 / SMS2003 来讲这些注册表信息抓出来,用作进一步的分析和判断和报告。
    
    
    2010年4月13日 7:56
    版主
  • 
    通过打包工具,例如SMS installer,Wise installation studio,installshield 等,以及脚本,程序,都可以操作注册表,所以绝大部分在客户端的操作,我们都可以用注册表键值来记录操作过程信息和结果。
    
    然后用SCCM2007 / SMS2003 来讲这些注册表信息抓出来,用作进一步的分析和判断和报告。
    
    
    2010年4月13日 7:56
    版主