共用方式為


如何將條件新增至作系統部署工作順序步驟

您可以藉由建立SMS_TaskSequence_Condition類別實例,然後與步驟建立關聯,將條件新增至作系統部署步驟 (動作和群組 ) ,Configuration Manager。 如果條件作數都符合,則會處理步驟;否則則不是。 條件可以有一或多個作數,這些作數是SMS_TaskSequence_Condition衍生類別的實例。 您可以使用 SMS_TaskSequence_ConditionOperator 實體來指定作數的 運算子

將條件新增至步驟

  1. 設定與SMS提供者的連線。 如需詳細資訊,請 參閱SMS提供者基本概念

  2. 取得工作順序步驟物件。 這可以是 群組的SMS_TaskSequence_Group 物件,或是動作 的SMS_TaskSequenceAction 衍生類別物件,如需詳細資訊,請參閱 如何新增作系統部署工作順序動作

  3. 藉由建立的實例 SMS_TaskSequence_Condition來建立新條件。

  4. 建立 SMS_TaskSequence_ConditionExpression衍生 類別的實例,以建立條件的表達式。 例如, SMS_TaskSequence_RegistryConditionExpression

  5. 填入表達式屬性。

  6. 將表達式新增至條件 Operands 屬性。

  7. 將條件新增至工作順序步驟類別 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;
    }
}

範例方法具有下列參數:

參數 Type 描述
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
SMS 提供者的有效連線。
taskSequenceStep -管理: IResultObject
- VBScript: SWbemObject
有效的工作順序步驟 (SMS_TaskSequenceStep)

正在編譯程式碼

C# 範例具有下列編譯需求:

命名空間

系統

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

組件

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於 Configuration Manager 錯誤

.NET Framework 安全性

如需保護 Configuration Manager 應用程式的詳細資訊,請參閱 Configuration Manager 角色型系統管理

另請參閱

物件概觀 如何使用受控程序代碼如何使用WMI工作順序在 Configuration Manager 中聯機到 SMS 提供者概觀,以在 Configuration Manager 中新增作系統部署工作順序動作