Como adicionar uma condição a uma etapa de sequência de tarefas de implantação do sistema operacional

As condições podem ser adicionadas a uma etapa de implantação do sistema operacional (ação e grupo), em Configuration Manager, criando uma instância de classe SMS_TaskSequence_Condition e associando-a à etapa. Se todos os operandos de condição forem atendidos, a etapa será processada; caso contrário, não é. A condição pode ter um ou mais operandos que são instâncias de classes derivadas SMS_TaskSequence_Condition. Especifique operadores para os operandos com instâncias de SMS_TaskSequence_ConditionOperator.

Para adicionar uma condição a uma etapa

  1. Configure uma conexão com o Provedor de SMS. Para obter mais informações, confira Os fundamentos do Provedor de SMS.

  2. Obtenha um objeto de etapa de sequência de tarefas. Isso pode ser um objeto SMS_TaskSequence_Group para um grupo ou um objeto de classe derivado SMS_TaskSequenceAction para uma ação, para obter mais informações, consulte Como adicionar uma ação de sequência de tarefas de implantação do sistema operacional.

  3. Crie uma nova condição criando uma instância de SMS_TaskSequence_Condition.

  4. Crie uma expressão para a condição criando uma instância de uma classe derivada SMS_TaskSequence_ConditionExpression . Por exemplo, SMS_TaskSequence_RegistryConditionExpression.

  5. Preencha as propriedades de expressão.

  6. Adicione a expressão à propriedade Operands de condição.

  7. Adicione a condição à propriedade condição da etapa de sequência de tarefas.

Exemplo

O método de exemplo a seguir adiciona uma condição a uma etapa fornecida que determina se a chave do registro HKEY_LOCAL_MACHINE\MICROSOFT existe. A expressão SMS_TaskSequenc_RegistryCondition é usada para especificar a condição.

Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets de Código.

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

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection -Gerenciado: WqlConnectionManager
- VBScript: SWbemServices
Uma conexão válida com o provedor de SMS.
taskSequenceStep -Gerenciado: IResultObject
- VBScript: SWbemObject
Uma etapa de sequência de tarefas válida (SMS_TaskSequenceStep).

Compilando o código

O exemplo C# tem os seguintes requisitos de compilação:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicativos Configuration Manager, consulte Configuration Manager administração baseada em função.

Confira também

Visão geral de objetoscomo adicionar uma ação de sequência de tarefas de implantação do sistema operacional
Como se conectar a um provedor de SMS em Configuration Manager usando código gerenciado
Como se conectar a um provedor de SMS no Configuration Manager usando o WMI
Visão geral de sequências de tarefas