如何設定軟體清查設定

您可以修改必要的月臺控制檔案設定,在 Configuration Manager 中設定軟體清查用戶端代理程序設定。

修改軟體清查用戶端代理程序設定

  1. 設定與SMS提供者的連線。

  2. 使用 SMS_SCI_ClientComp 類別, 連線至月臺控制檔案的 [軟體清查用戶端代理程式] 區段。

  3. 迴圈查看可用屬性的陣列,並視需要進行變更。

  4. 將變更認可至月臺控制檔案。

範例

下列範例會使用 SMS_SCI_ClientComp 類別來連線到月臺控制檔案並變更屬性,以設定軟體清查用戶端代理程序設定。

如需呼叫範例程式代碼的相關信息,請參閱呼叫 Configuration Manager 代碼段


Sub ConfigureSoftwareInventoryClientAgentSettings(swbemServices,             _  
                                                  swbemContext,              _  
                                                  siteCode,                  _  
                                                  enableDisableClientAgent,  _  
                                                  newInventorySchedule)  

    ' Load site control file and get the SMS_SCI_ClientComp section.  
    swbemServices.ExecMethod "SMS_SiteControlFile.Filetype=1,Sitecode=""" & siteCode & """", "Refresh", , , swbemContext  

    Query = "SELECT * FROM SMS_SCI_ClientComp " & _  
    "WHERE ClientComponentName = 'Software 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 "Software 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  

        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 ConfigureSoftwareInventoryClientAgentSettings(WqlConnectionManager connection,  
                                                          string siteCode,  
                                                          string enableDisableClientAgent,  
                                                          string newInventorySchedule)  
{  
    try  
    {  
        IResultObject siteDefinition = connection.GetInstance(@"SMS_SCI_ClientComp.FileType=1,ItemType='Client Component',SiteCode='" + siteCode + "',ItemName='Software 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("Software Update Client Agent");  
        Console.WriteLine("Current value: " + siteDefinition["Flags"].StringValue);  

        // Change value using the enableDisableSUMClientAgent 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: " + embeddedProperties[kvp.Value.PropertyList["PropertyName"]]["Value2"].StringValue);  

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

            // 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;  
    }  
}  

範例方法具有下列參數:

參數 Type 描述
- 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
要設定清查排程的值。
newScanInterval -管理: String
- VBScript: String
要設定掃描間隔的值。

正在編譯程式碼

此 C# 範例需要:

命名空間

系統

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

組件

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於 Configuration Manager 錯誤

.NET Framework 安全性

如需保護 Configuration Manager 應用程式的詳細資訊,請參閱 Configuration Manager 角色型系統管理

另請參閱

關於 Configuration Manager 清查
關於 Configuration Manager 月臺控制檔案
如何使用 Managed 程式代碼讀取和寫入 Configuration Manager 月臺控制檔案
如何使用 WMI 讀取和寫入 Configuration Manager 月臺控制檔案
SMS_SCI_Component伺服器 WMI 類別
關於排程如何 Create 排程令牌