如何配置硬件清单设置

在 Configuration Manager 中,通过修改必要的站点控制文件设置来设置硬件清单客户端代理设置。

修改硬件清单客户端代理设置

  1. 设置与 SMS 提供程序的连接。

  2. 使用 SMS_SCI_ClientComp 类连接到站点控制文件的“硬件清单客户端代理”部分。

  3. 循环访问可用属性的数组,根据需要进行更改。

  4. 提交对站点控制文件的更改。

示例

以下示例通过使用 SMS_SCI_ClientComp 类连接到站点控制文件和更改属性来设置硬件清单客户端代理设置。

有关调用示例代码的信息,请参阅调用Configuration Manager代码片段


Sub ConfigureHardwareInventoryClientAgentSettings(swbemServices,        _  
                                                  swbemContext,         _  
                                                  siteCode,             _  
                                                  newInventorySchedule, _  
                                                  newMIFSize,           _   
                                                  newMIFCollection)  

    ' Load site control file and get the SMS Software Update Point system resource section.  
    swbemServices.ExecMethod "SMS_SiteControlFile.Filetype=1,Sitecode=""" & siteCode & """", "Refresh", , , swbemContext  

    Query = "SELECT * FROM SMS_SCI_ClientComp " & _  
    "WHERE ClientComponentName = 'Hardware Inventory Agent' " & _  
    "AND SiteCode = '" & siteCode & "'"            

    Set SCIComponentSet = swbemServices.ExecQuery(Query, ,wbemFlagForwardOnly Or wbemFlagReturnImmediately, swbemContext)  

    ' Only one instance is returned from the query.  
    For Each SCIComponent In SCIComponentSet  

        ' Set the client agent by setting the Flags value to 0 or 1 using the enableDisableClientAgent variable.  
        wscript.echo " "  
        wscript.echo "Hardware Inventory Agent"  
        wscript.echo "Current value " &  SCIComponent.Flags  

        ' Modify the value.                  
        SCIComponent.Flags = enableDisableClientAgent  
        wscript.echo "New value " & enableDisableClientAgent  

        'Loop through the array of embedded SMS_EmbeddedProperty instances.  
        For Each vProperty In SCIComponent.Props  

            ' Setting: Inventory Schedule  
            If vProperty.PropertyName = "Inventory Schedule" Then  
                wscript.echo " "  
                wscript.echo vProperty.PropertyName  
                wscript.echo "Current value " &  vProperty.Value2                 

                'Modify the value.  
                vProperty.Value2 = newInventorySchedule  
                wscript.echo "New value " & newInventorySchedule  
            End If  

            ' Setting: Maximum 3rd Party MIF Size  
            If vProperty.PropertyName = "Maximum 3rd Party MIF Size" Then  
                wscript.echo " "  
                wscript.echo vProperty.PropertyName  
                wscript.echo "Current value " &  vProperty.Value                 

                ' Modify the value.  
                vProperty.Value = newMIFSize  
                wscript.echo "New value " & newMIFSize  
            End If  

            ' Setting: MIF Collection  
            If vProperty.PropertyName = "MIF Collection" Then  
                wscript.echo " "  
                wscript.echo vProperty.PropertyName  
                wscript.echo "Current value " &  vProperty.Value                 

                ' Modify the value.  
                vProperty.Value = newMIFCollection  
                wscript.echo "New value " & newMIFCollection  
            End If  

        Next     

        ' Update the component in your copy of the site control file. Get the path  
        'to the updated object, which could be used later to retrieve the instance.  
        Set SCICompPath = SCIComponent.Put_(wbemChangeFlagUpdateOnly, swbemContext)  

    Next  

    ' Commit the change to the actual site control file.  
    Set InParams = swbemServices.Get("SMS_SiteControlFile").Methods_("CommitSCF").InParameters.SpawnInstance_  
    InParams.SiteCode = siteCode  
    swbemServices.ExecMethod "SMS_SiteControlFile", "CommitSCF", InParams, , swbemContext  

End Sub  

public void ConfigureHardwareInventoryClientAgentSettings(WqlConnectionManager connection,  
                                                    string siteCode,  
                                                    string enableDisableClientAgent,  
                                                    string newInventorySchedule,  
                                                    string newMIFSize,  
                                                    string newMIFCollection)  
{  
    try  
    {  
        IResultObject siteDefinition = connection.GetInstance(@"SMS_SCI_ClientComp.FileType=1,ItemType='Client Component',SiteCode='" + siteCode + "',ItemName='Hardware Inventory Agent'");  

        // Setting: Enable Client Agent  
        // Enable or disable the client agent by setting the Flags value to 0 or 1 using the enableDisableClientAgent variable.   
        Console.WriteLine();  
        Console.WriteLine("Hardware Inventory Client Agent");  
        Console.WriteLine("Current value: " + siteDefinition["Flags"].StringValue);  

        // Change value using the enableDisableClientAgent value passed in.   
        siteDefinition["Flags"].StringValue = enableDisableClientAgent;  
        Console.WriteLine("New value    : " + enableDisableClientAgent);  

        foreach (KeyValuePair<string, IResultObject> kvp in siteDefinition.EmbeddedProperties)  
        {  
            // Create temporary working copy of embedded properties.  
            Dictionary<string, IResultObject> embeddedProperties = siteDefinition.EmbeddedProperties;  

            // Setting: Inventory Schedule  
            if (kvp.Value.PropertyList["PropertyName"] == "Inventory Schedule")  
            {  
                Console.WriteLine();  
                Console.WriteLine(kvp.Value.PropertyList["PropertyName"]);  
                Console.WriteLine("Current value: " + kvp.Value.PropertyList["PropertyName"]);  

                // Change value using the newInventorySchedule value passed in.   
                embeddedProperties["Inventory Schedule"]["Value2"].StringValue = newInventorySchedule;  
                Console.WriteLine("New value    : " + newInventorySchedule);  
            }  

            // Setting: Maximum 3rd Party MIF Size  
            if (kvp.Value.PropertyList["PropertyName"] == "Maximum 3rd Party MIF Size")  
            {  
                Console.WriteLine();  
                Console.WriteLine(kvp.Value.PropertyList["PropertyName"]);  
                Console.WriteLine("Current value: " + kvp.Value.PropertyList["PropertyName"]);  

                // Change value using the newMIFSize value passed in.   
                embeddedProperties["Maximum 3rd Party MIF Size"]["Value"].StringValue = newMIFSize;  
                Console.WriteLine("New value    : " + newMIFSize);  
            }  

            // Setting: MIF Collection  
            if (kvp.Value.PropertyList["PropertyName"] == "MIF Collection")  
            {  
                Console.WriteLine();  
                Console.WriteLine(kvp.Value.PropertyList["PropertyName"]);  
                Console.WriteLine("Current value: " + kvp.Value.PropertyList["PropertyName"]);  

                // Change value using the newMIFCollection value passed in.   
                embeddedProperties["MIF Collection"]["Value"].StringValue = newMIFCollection;  
                Console.WriteLine("New value    : " + newMIFCollection);  
            }  

            // Store the settings that have changed.  
            siteDefinition.EmbeddedProperties = embeddedProperties;  
        }  

        // Save the settings.   
        siteDefinition.Put();  

    }  

    catch (SmsException ex)  
    {  
        Console.WriteLine("Failed. Error: " + ex.InnerException.Message);  
        throw;  
    }  

}  

示例方法具有以下参数:

参数 类型 说明
- connection
- swbemServices
-管理: WqlConnectionManager
- VBScript: SWbemServices
与 SMS 提供程序的有效连接。
swbemContext - VBScript: SWbemContext 有效的上下文对象。 有关详细信息,请参阅如何使用 WMI 添加Configuration Manager上下文限定符
siteCode -管理: String
- VBScript: String
站点代码。
enableDisableClientAgent -管理: String
- VBScript: String
用于启用或禁用客户端代理的值。

已禁用 - 0

已启用 - 1
newInventorySchedule -管理: String
- VBScript: String
用于设置清单计划的值。
newMIFSize -管理: String
- VBScript: String
一个值,用于设置硬件清单 MIF 的最大大小。

默认值为 512。
newMIFCollection -管理: String
- VBScript: String
用于启用或禁用 MIF 集合的值。

收集:

无 (MIF) 文件 - 0

NOIDMIF 文件 - 4

IDMIF 文件 - 8

NOIDMIF 和 IDMIF 文件 - 12

编译代码

此 C# 示例需要:

命名空间

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

可靠编程

有关错误处理的详细信息,请参阅关于Configuration Manager错误

.NET Framework 安全性

有关保护Configuration Manager应用程序的详细信息,请参阅Configuration Manager基于角色的管理

另请参阅

关于Configuration Manager清单
关于Configuration Manager站点控制文件
如何使用托管代码读取和写入Configuration Manager站点控制文件
如何使用 WMI 读取和写入Configuration Manager站点控制文件
SMS_SCI_Component服务器 WMI 类
关于计划如何Create计划令牌