共用方式為


如何在 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 中建立計算機變數如何建立Configuration Manager 物件使用 Managed 程式代碼如何使用 WMI關於 OS 部署電腦管理建立 Configuration Manager 物件