Поделиться через


Создание переменной коллекции в Configuration Manager

Переменная коллекции для коллекции Configuration Manager создается путем добавления экземпляров класса CollectionVariablesWMI сервера SMS_CollectionVariable в свойство класса WMI сервера SMS_CollectionSettings.

Создание переменной коллекции

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

Метод примера имеет следующие параметры:

Параметр Тип Описание
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;

System.Collections.Generic;

Майкрософт. ConfigurationManagement.ManagementProvider

Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

Безопасность .NET Framework

Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.

См. также

Общие сведения об объектах. Подключение к поставщику SMS в Configuration Manager с помощью управляемого кода
Подключение к поставщику SMS в Configuration Manager с помощью WMI
Создание переменной компьютера в Configuration Manager
Создание объекта Configuration Manager с помощью управляемого кода
Создание объекта Configuration Manager с помощью WMI
Сведения об управлении компьютером развертывания ОС