为SCCM查询创建自定义WMI类

时间:2019-03-06 23:38:28

标签: wmi sccm

我正在创建一个自定义WMI类,以与SCCM的设备集合成员资格查询规则一起使用,以向SCCM公开一些组织特定的信息以进行集合创建。我设法在下面的MOF文件中添加了一个新类,它按预期显示在GUI中,并带有所需的显示名称。

我认为我唯一要解决的问题是如何使生成的查询按预期工作。我知道默认情况下WQL不支持联接。但是,Microsoft似乎经常在这些查询中使用它们,并且我已验证它们在应用程序外部按预期运行。我需要创建某种加入类来完成这项工作吗?是否有一些属性可以将属性指定为原键?

我在Windows Dev Center网站上搜索了System Center Configuration Manager SDK文档和WMI参考,花了几个小时而没有运气,非常感谢任何有用的输入。

MOF文件:

#pragma namespace ("\\\\.\\root\\sms\\site_lab")
[DisplayName("CMDB CI Computer")]
class SMS_G_System_MTS_cmdb_ci_computer : SMS_G_System    
{
    [key] uint32 ResourceID;
    string asset_tag;
    string dv_company;
    string dv_cost_center;
    string dv_location;
};

SCCM生成的查询:

select * from  SMS_R_System inner join SMS_G_System_MTS_cmdb_ci_computer on SMS_G_System_MTS_cmdb_ci_computer.ResourceID = SMS_R_System.ResourceId

我正在Powershell中使用Get-CimInstance命令测试这些命令,并得到以下结果

Powershell:

此命令按预期返回联接的对象。

Get-CimInstance -Namespace 'root\sms\site_lab' -Query 'select SMS_G_System_PROCESSOR.Architecture from  SMS_R_System inner join SMS_G_System_PROCESSOR on SMS_G_System_PROCESSOR.ResourceId = SMS_R_System.ResourceId'

此命令将引发“无效查询”错误。

Get-CimInstance -Namespace 'root\sms\site_lab' -Query 'select asset_tag from  SMS_R_System inner join SMS_G_System_MTS_cmdb_ci_computer on SMS_G_System_MTS_cmdb_ci_computer.ResourceID = SMS_R_System.ResourceId'

0 个答案:

没有答案