可以通过创建SMS_TaskSequence_Condition类实例并将其与步骤关联,Configuration Manager将条件添加到作系统部署步骤 (作和组) 。 如果全部满足条件作数,则处理步骤;否则,它不是。 条件可以具有一个或多个作数,这些作数是SMS_TaskSequence_Condition派生类的实例。 为具有 SMS_TaskSequence_ConditionOperator 实例的作数指定运算符。
向步骤添加条件
- 设置与 SMS 提供程序的连接。 有关详细信息,请参阅 SMS 提供程序基础知识。 
- 获取任务序列步骤对象。 这可以是组 的SMS_TaskSequence_Group 对象,也可以是作 的SMS_TaskSequenceAction 派生类对象,有关详细信息,请参阅 如何添加作系统部署任务序列作。 
- 通过创建 实例 - SMS_TaskSequence_Condition来创建新条件。
- 通过创建 SMS_TaskSequence_ConditionExpression 派生类的实例,为 条件创建表达式。 例如, SMS_TaskSequence_RegistryConditionExpression。 
- 填充表达式属性。 
- 将表达式添加到条件 Operands 属性。 
- 将条件添加到任务序列步骤类 Condition 属性。 
示例
以下示例方法向提供的步骤添加一个条件,用于确定是否存在 HKEY_LOCAL_MACHINE\MICROSOFT 注册表项。 SMS_TaskSequenc_RegistryCondition表达式用于指定条件。
有关调用示例代码的信息,请参阅调用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;
    }
}
示例方法具有以下参数:
| 参数 | 类型 | 说明 | 
|---|---|---|
| connection | -管理: WqlConnectionManager- VBScript: SWbemServices | 与 SMS 提供程序的有效连接。 | 
| taskSequenceStep | -管理: IResultObject- VBScript: SWbemObject | 有效的任务序列步骤 (SMS_TaskSequenceStep) 。 | 
编译代码
C# 示例具有以下编译要求:
命名空间
System
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
可靠编程
有关错误处理的详细信息,请参阅关于Configuration Manager错误。
.NET Framework 安全性
有关保护Configuration Manager应用程序的详细信息,请参阅Configuration Manager基于角色的管理。
另请参阅
对象概述如何添加作系统部署任务序列作如何使用托管代码连接到 Configuration Manager 中的SMS 提供程序如何使用 WMI 任务序列在 Configuration Manager连接到 SMS 提供程序概述