Compartir a través de


Procedimiento para agregar una condición a un paso de secuencia de tareas de implementación del sistema operativo

Las condiciones se pueden agregar a un paso de implementación del sistema operativo (acción y grupo), en Configuration Manager, creando una instancia de clase SMS_TaskSequence_Condition y asociándola después al paso. Si se cumplen todos los operandos de condición, se procesa el paso; de lo contrario, no lo es. La condición puede tener uno o varios operandos que son instancias de SMS_TaskSequence_Condition clases derivadas. Los operadores de los operandos se especifican con instancias de SMS_TaskSequence_ConditionOperator.

Para agregar una condición a un paso

  1. Configure una conexión con el proveedor de SMS. Para obtener más información, consulte Aspectos básicos del proveedor de SMS.

  2. Obtenga un objeto de paso de secuencia de tareas. Puede ser un objeto SMS_TaskSequence_Group para un grupo o un objeto de clase derivado de SMS_TaskSequenceAction para una acción. Para obtener más información, vea Cómo agregar una acción de secuencia de tareas de implementación del sistema operativo.

  3. Cree una nueva condición mediante la creación de una instancia de SMS_TaskSequence_Condition.

  4. Cree una expresión para la condición mediante la creación de una instancia de una clase derivada de SMS_TaskSequence_ConditionExpression . Por ejemplo, SMS_TaskSequence_RegistryConditionExpression.

  5. Rellene las propiedades de la expresión.

  6. Agregue la expresión a la propiedad condition Operands .

  7. Agregue la condición a la propiedad Condition de la clase de paso de secuencia de tareas.

Ejemplo

El siguiente método de ejemplo agrega una condición a un paso proporcionado que determina si existe la clave del Registro HKEY_LOCAL_MACHINE\MICROSOFT. La expresión SMS_TaskSequenc_RegistryCondition se usa para especificar la condición.

Para obtener información sobre cómo llamar al código de ejemplo, vea Llamar a fragmentos de código de 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;  
    }  
}  

El método de ejemplo tiene los parámetros siguientes:

Parámetro Tipo Descripción
connection -Administrado: WqlConnectionManager
- VBScript: SWbemServices
Una conexión válida al proveedor de SMS.
taskSequenceStep -Administrado: IResultObject
- VBScript: SWbemObject
Un paso de secuencia de tareas válido (SMS_TaskSequenceStep).

Compilar el código

El ejemplo de C# tiene los siguientes requisitos de compilación:

Espacios de nombres

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Ensamblado

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programación sólida

Para obtener más información sobre el control de errores, consulte Acerca de los errores de Configuration Manager.

Seguridad de .NET Framework

Para obtener más información sobre la protección de aplicaciones Configuration Manager, consulte Configuration Manager administración basada en roles.

Consulta también

Introducción a los objetosCómo agregar una acción de secuencia de tareas de implementación del sistema operativo
Conexión a un proveedor de SMS en Configuration Manager mediante código administrado
Conexión a un proveedor de SMS en Configuration Manager mediante WMI
Introducción a la secuencia de tareas