Compartilhar via


Como Adicionar uma Condição a um Passo de Sequência de Tarefas de Implementação do Sistema Operativo

As condições podem ser adicionadas a um passo de implementação do sistema operativo (ação e grupo), no Configuration Manager, ao criar uma instância de classe SMS_TaskSequence_Condition e, em seguida, associá-la ao passo. Se todos os operandos de condição forem cumpridos, o passo é processado; 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 um passo

  1. Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja Noções básicas do Fornecedor de SMS.

  2. Obtenha um objeto de passo de sequência de tarefas. Pode ser um objeto de SMS_TaskSequence_Group para um grupo ou um objeto de classe derivado SMS_TaskSequenceAction para uma ação. Para obter mais informações, veja Como Adicionar uma Ação de Sequência de Tarefas de Implementação do Sistema Operativo.

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

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

  5. Preencha as propriedades da expressão.

  6. Adicione a expressão à propriedade Operandos da condição.

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

Exemplo

O método de exemplo seguinte adiciona uma condição a um passo fornecido que determina se a chave de registo HKEY_LOCAL_MACHINE\MICROSOFT existe. A Expressão SMS_TaskSequenc_RegistryCondition é utilizada para especificar a condição.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos 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 - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
taskSequenceStep - Gerido: IResultObject
- VBScript: SWbemObject
Um passo de sequência de tarefas válido (SMS_TaskSequenceStep).

Compilando o código

O exemplo de 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 processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Segurança do .NET Framework

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

Confira também

Descrição geral de ObjetosComo Adicionar uma Ação de Sequência de Tarefas de Implementação do Sistema OperativoComo Ligar a um Fornecedor de SMS no Configuration Manager Utilizando Código GeridoComo Ligar a um Fornecedor de SMS no Configuration Manager utilizando a descrição geral da sequência de tarefas WMI