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 quindi associandola al passaggio . Se gli operandi della condizione sono tutti soddisfatti, il passaggio viene elaborato; in caso contrario, non lo è. La condizione può avere uno o più operandi che sono istanze di SMS_TaskSequence_Condition classi derivate. Specificare gli operatori per gli operandi 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 oggetto classe derivata SMS_TaskSequenceAction per un'azione, per altre informazioni, vedere Come aggiungere un'azione della sequenza di attività di distribuzione del sistema operativo.

  3. Creare 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à dell'espressione.

  6. Aggiungere l'espressione alla proprietà operandi condizione.

  7. Aggiungere la condizione alla proprietà Condition della classe di passaggio della sequenza di attività.

Esempio

Il metodo di esempio seguente aggiunge una condizione a un passaggio fornito che determina se esiste la chiave del Registro di sistema HKEY_LOCAL_MACHINE\MICROSOFT. 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 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
Connessione valida al provider SMS.
taskSequenceStep -Gestito: IResultObject
- VBScript: SWbemObject
Passaggio della sequenza di attività valido (SMS_TaskSequenceStep).

Compilazione del codice

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

Namespaces

Sistema

System.collections.generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.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 Configuration Manager, vedere Configuration Manager'amministrazione basata sui ruoli.

Vedere anche

Panoramica degli oggettiCome aggiungere un'azione della sequenza di attività di distribuzione del sistema operativo
Come connettersi a un provider SMS in Configuration Manager tramite codice gestito
Come connettersi a un provider SMS in Configuration Manager tramite WMI
Panoramica sulla sequenza delle attività