Dela via


Lägga till ett villkor i ett aktivitetssekvenssteg för operativsystemdistribution

Villkor kan läggas till i ett distributionssteg för operativsystem (åtgärd och grupp) i Configuration Manager genom att skapa en SMS_TaskSequence_Condition klassinstans och sedan associera den med steget. Om alla villkorsopernder uppfylls bearbetas steget. annars är det inte det. Villkoret kan ha en eller flera operander som är instanser av SMS_TaskSequence_Condition härledda klasser. Du anger operatorer för operanderna med instanser av SMS_TaskSequence_ConditionOperator.

Lägga till ett villkor i ett steg

  1. Konfigurera en anslutning till SMS-providern. Mer information finns i grunderna för SMS-provider.

  2. Hämta ett aktivitetssekvensstegobjekt. Detta kan vara ett SMS_TaskSequence_Group objekt för en grupp eller ett SMS_TaskSequenceAction härlett klassobjekt för en åtgärd. Mer information finns i Lägga till en aktivitetssekvensåtgärd för operativsystemdistribution.

  3. Skapa ett nytt villkor genom att skapa en instans av SMS_TaskSequence_Condition.

  4. Skapa ett uttryck för villkoret genom att skapa en instans av en SMS_TaskSequence_ConditionExpression härledd klass. Till exempel SMS_TaskSequence_RegistryConditionExpression.

  5. Fyll i uttrycksegenskaperna.

  6. Lägg till uttrycket i villkoret Operands-egenskapen .

  7. Lägg till villkoret i egenskapen för aktivitetssekvensstegklassen Villkor .

Exempel

Följande exempelmetod lägger till ett villkor i ett angivet steg som avgör om HKEY_LOCAL_MACHINE\MICROSOFT registernyckel finns. Uttrycket SMS_TaskSequenc_RegistryCondition används för att ange villkoret.

Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.

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

Exempelmetoden har följande parametrar:

Parameter Typ Beskrivning
connection -Hanterade: WqlConnectionManager
– VBScript: SWbemServices
En giltig anslutning till SMS-providern.
taskSequenceStep -Hanterade: IResultObject
– VBScript: SWbemObject
Ett giltigt aktivitetssekvenssteg (SMS_TaskSequenceStep).

Kompilera koden

C#-exemplet har följande kompileringskrav:

Namnområden

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Församlingen

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robust programmering

Mer information om felhantering finns i Om Configuration Manager fel.

.NET Framework Säkerhet

Mer information om hur du skyddar Configuration Manager program finns i Configuration Manager rollbaserad administration.

Se även

ObjektöversiktSå här lägger du till en aktivitetssekvensåtgärd för operativsystemdistribution
Ansluta till en SMS-provider i Configuration Manager med hjälp av hanterad kod
Ansluta till en SMS-provider i Configuration Manager med hjälp av WMI
Översikt över aktivitetssekvens