Share via


如何在 Configuration Manager 中建立集合變數

您可以將 SMS_CollectionVariable Server WMI 類別的實例新增至SMS_CollectionSettings Server WMI 類別CollectionVariables 的 屬性,以建立Configuration Manager集合的集合變數。

若要建立集合變數

  1. 設定與 SMS 提供者的連線。 如需詳細資訊,請 參閱 SMS 提供者基本概念

  2. 取得 SMS_CollectionSettings的實例

  3. 針對要加入的每個變數,將内嵌物件 的實例SMS_CollectionVariable 加入 CollectionVariables 數 組屬性。

  4. 將變更認可至類別實 SMS_CollectionSettings 例。

範例

下列範例方法會建立集合變數,並將其新增至所提供識別碼所識別的集合。 SMS_CollectionSettings如果集合的 物件不存在,則會加以建立。

如需呼叫範例程式碼的相關資訊,請參閱呼叫Configuration Manager程式碼片段

Sub CreateCollectionVariable( connection, name, value, mask, collectionId, precedence)  

    Dim collectionSettings  
    Dim collectionVariables  
    Dim collectionVariable  
    Dim Settings  

    ' See if the settings collection already exists. if it does not, create it.  
    Set settings = connection.ExecQuery _  
      ("Select * From SMS_CollectionSettings Where CollectionID = '" & collectionID & "'")  

    If settings.Count = 0 Then  
        Wscript.Echo "Creating collection settings object"  
        Set collectionSettings = connection.Get("SMS_CollectionSettings").SpawnInstance_  
        collectionSettings.CollectionID = collectionId  
        collectionSettings.Put_  
    End If    

    ' Get the collection settings object.  
    Set collectionSettings = connection.Get("SMS_CollectionSettings.CollectionID='" & collectionId &"'" )  

    ' Get the collection variables.  
    collectionVariables=collectionSettings.CollectionVariables  

    ' Create and populate a new collection variable.  
    Set collectionVariable = connection.Get("SMS_CollectionVariable").SpawnInstance_  
    collectionVariable.Name = name  
    collectionVariable.Value = value  
    collectionVariable.IsMasked = mask  

    ' Add the new collection variable.  
    ReDim Preserve collectionVariables (UBound (collectionVariables)+1)  
    Set collectionVariables(UBound(collectionVariables)) = collectionVariable  

    collectionSettings.CollectionVariables=collectionVariables  

    collectionSettings.Put_  

 End Sub     
public void CreateCollectionVariable(  
    WqlConnectionManager connection,   
    string name,   
    string value,   
    bool mask,   
    string collectionId,   
    int precedence)  
{  
    try  
    {  
        IResultObject collectionSettings = null;  

        // Get the collection settings. Create it if necessary.  

         IResultObject collectionSettingsQuery = connection.QueryProcessor.ExecuteQuery(  
                    "Select * from SMS_CollectionSettings where CollectionID='" + collectionId + "'");  

         foreach (IResultObject setting in collectionSettingsQuery)  
         {  
             collectionSettings = setting;  
         }  

        if ( collectionSettings == null)  
         {  
             collectionSettings = connection.CreateInstance("SMS_CollectionSettings");  
             collectionSettings["CollectionID"].StringValue = collectionId;  
             collectionSettings.Put();  
             collectionSettings.Get();  
         }  

        // Create the collection variable.  
        List<IResultObject> collectionVariables = collectionSettings.GetArrayItems("CollectionVariables");  
        IResultObject collectionVariable = connection.CreateEmbeddedObjectInstance("SMS_CollectionVariable");  
        collectionVariable["Name"].StringValue = name;  
        collectionVariable["Value"].StringValue = value;  
        collectionVariable["IsMasked"].BooleanValue = mask;  

        // Add the collection variable to the collection settings.  
        collectionVariables.Add(collectionVariable);  
        collectionSettings.SetArrayItems("CollectionVariables", collectionVariables);  

        // Set the collection variable precedence.  
        collectionSettings["CollectionVariablePrecedence"].IntegerValue = precedence;  

        collectionSettings.Put();  
    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed to create collection variable: " + e.Message);  
        throw;  
   }  
}  

範例方法具有下列參數:

參數 Type 描述
Connection -管理: WqlConnectionManager
- VBScript: SWbemServices
SMS 提供者的有效連線。
Name -管理: String
- VBScript: String
要建立的變數名稱。
Value -管理: String
- VBScript: String
變數的值
Mask -管理: Boolean
- VBScript: Boolean
指定值是否顯示在 Configuration Manager 主控台中。

true - 不會顯示變數值。

false - 顯示變數值。
CollectionID -管理: String
- VBScript: String
要加入變數的集合。
Precedence -管理: Integer
- VBScript: Integer
變數的優先順序高於陣列中的其他變數。

正在編譯程式碼

C# 範例具有下列編譯需求:

命名空間

系統

System.Collections.Generic

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

組件

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

健全的程式設計

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

.NET Framework 安全性

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

另請參閱

物件概觀如何使用 Managed 程式碼在Configuration Manager中連線至 SMS 提供者
如何使用 WMI 在 Configuration Manager 中連線到 SMS 提供者
如何在 Configuration Manager 中建立電腦變數
如何使用 Managed 程式碼建立Configuration Manager物件
如何使用 WMI 建立Configuration Manager物件
關於作業系統部署電腦管理