Come aggiungere una condizione a un passaggio della sequenza di attività di distribuzione del sistema operativo

Le condizioni possono essere aggiunte a un passaggio di distribuzione del sistema operativo (azione e gruppo), in Configuration Manager, creando un'istanza della classe SMS_TaskSequence_Condition e associandola al passaggio. Se gli operandi delle condizioni sono tutti soddisfatti, il passaggio viene elaborato; altrimenti non lo è. La condizione può avere uno o più operandi che sono istanze di SMS_TaskSequence_Condition classi derivate. Gli operatori per gli operandi vengono specificati con istanze di SMS_TaskSequence_ConditionOperator.

Per aggiungere una condizione a un passaggio

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Ottenere un oggetto passaggio della sequenza di attività. Può trattarsi di un oggetto SMS_TaskSequence_Group per un gruppo o di un SMS_TaskSequenceAction oggetto classe derivato per un'azione. Per altre informazioni, vedere Come aggiungere un'azione della sequenza di attività di distribuzione del sistema operativo.

  3. Create una nuova condizione creando un'istanza di SMS_TaskSequence_Condition.

  4. Creare un'espressione per la condizione creando un'istanza di una classe derivata SMS_TaskSequence_ConditionExpression . Ad esempio, SMS_TaskSequence_RegistryConditionExpression.

  5. Popolare le proprietà delle espressioni.

  6. Aggiungere l'espressione alla proprietà Operandi della condizione.

  7. Aggiungi la condizione alla proprietà Condition della classe di passaggi della sequenza di attività.

Esempio

Il metodo di esempio seguente aggiunge una condizione a un passaggio fornito che determina se la chiave del Registro di sistema HKEY_LOCAL_MACHINE\MICROSOFT esiste. L'espressione SMS_TaskSequenc_RegistryCondition viene utilizzata per specificare la condizione.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice di 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;
    }
}

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection - Gestito: WqlConnectionManager
- VBScript: SWbemServices
Una connessione valida al provider SMS.
taskSequenceStep - Gestito: IResultObject
- VBScript: SWbemObject
Passaggio valido della sequenza di attività (SMS_TaskSequenceStep).

Compilazione del codice

L'esempio di C# presenta i requisiti di compilazione seguenti:

Spazi dei nomi

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagementManagementProvider

Microsoft.ConfigurationManagementManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Sicurezza di .NET Framework

Per altre informazioni sulla protezione delle applicazioni di Configuration Manager, vedere Amministrazione basata sui ruoli di Configuration Manager.

Vedere anche

Panoramica degli oggettiCome aggiungere un sistema operativo Azione della sequenza di attivitàCome connettersi a un provider SMS in Configuration Manager tramite codice gestitoCome connettersi a un provider SMS in Configuration Manager tramite WMIPanoramica della sequenza di attività