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


Добавление условия на шаг последовательности задач развертывания операционной системы

Условия можно добавить на шаг развертывания операционной системы (действие и группа) в Configuration Manager, создав экземпляр класса SMS_TaskSequence_Condition, а затем связав его с шагом. Если все операнды условий выполнены, выполняется обработка шага; в противном случае это не так. Условие может иметь один или несколько операндов, которые являются экземплярами SMS_TaskSequence_Condition производных классов. Операторы для операндов указываются с экземплярами SMS_TaskSequence_ConditionOperator.

Добавление условия в шаг

  1. Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.

  2. Получение объекта шага последовательности задач. Это может быть объект SMS_TaskSequence_Group для группы или объект производного класса SMS_TaskSequenceAction для действия. Дополнительные сведения см. в разделе Добавление действия последовательности задач развертывания операционной системы.

  3. Создайте новое условие, создав экземпляр SMS_TaskSequence_Condition.

  4. Создайте выражение для условия, создав экземпляр производного класса SMS_TaskSequence_ConditionExpression . Например, SMS_TaskSequence_RegistryConditionExpression.

  5. Заполните свойства выражения.

  6. Добавьте выражение в свойство operands условия.

  7. Добавьте условие в свойство Condition класса шага последовательности задач.

Пример

В следующем примере метод добавляет условие в предоставленный шаг, который определяет, существует ли раздел реестра HKEY_LOCAL_MACHINE\MICROSOFT. Выражение SMS_TaskSequenc_RegistryCondition используется для указания условия.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода Configuration Manager.

Sub AddRegistryCondition (connection, taskSequenceStep)  

    Dim condition  
    Dim registryExpression  
    Dim operands  

    ' Get or create the condition.  
    if IsNull ( taskSequenceStep.Condition) Then  
       Set condition = connection.Get("SMS_TaskSequence_Condition").SpawnInstance_  
    Else  
        Set condition = taskSequenceStep.Condition  
    End If     

    ' Populate the condition.  
    Set registryExpression=connection.Get("SMS_TaskSequence_RegistryConditionExpression").SpawnInstance_  
    registryExpression.KeyPath="HKEY_LOCAL_MACHINE\MICROSOFT"  
    registryExpression.Operator="exists"  
    registryExpression.Type="REG_SZ"  
    registryExpression.Data=Null  

    ' Add the condition.  
    operands=Array(registryExpression)  
    condition.Operands=operands  
    taskSequenceStep.Condition=condition  

End Sub  
public void AddRegistryCondition(  
    WqlConnectionManager connection,   
    IResultObject taskSequenceStep)  
{  
    try  
    {  
        IResultObject condition;  

        if (taskSequenceStep["Condition"].ObjectValue == null)  
        {  
            // Create a new condition.  
            condition = connection.CreateEmbeddedObjectInstance("SMS_TaskSequence_Condition");  
        }  
        else  
        {   // Get the existing condition.  
            condition = taskSequenceStep.GetSingleItem("Condition");  
        }  

        // Create and populate the expression.  
        IResultObject registryExpression = connection.CreateEmbeddedObjectInstance("SMS_TaskSequence_RegistryConditionExpression");  

        registryExpression["KeyPath"].StringValue = @"HKEY_LOCAL_MACHINE\MICROSOFT";  
        registryExpression["Operator"].StringValue = "exists";  
        registryExpression["Type"].StringValue = "REG_SZ";  
        registryExpression["Data"].StringValue = null;  

        // Get the operands and add the expression.  
        List<IResultObject> operands = condition.GetArrayItems("Operands");  
        operands.Add(registryExpression);  

        // Add the expresssion to the list of operands.  
        condition.SetArrayItems("Operands", operands);  

        // Add the condition to the sequence.  
        taskSequenceStep.SetSingleItem("Condition", condition);  
    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed to create Task Sequence: " + e.Message);  
        throw;  
    }  
}  

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

Параметр Тип Описание
connection -Управляемых: WqlConnectionManager
— VBScript: SWbemServices
Допустимое подключение к поставщику SMS.
taskSequenceStep -Управляемых: IResultObject
— VBScript: SWbemObject
Допустимый шаг последовательности задач (SMS_TaskSequenceStep).

Компиляция программы

Пример C# имеет следующие требования к компиляции:

Пространства имен

System;

System.Collections.Generic;

System.Text

Майкрософт. 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
Обзор последовательности задач