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örsamling

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 operativsystemdistributionSå här ansluter du till en SMS-provider i Configuration Manager med hjälp av hanterad kodSå här ansluter du till en SMS-provider i Configuration Manager med hjälp av WMI-aktivitetssekvensöversikt