共用方式為


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

條件可以新增至作業系統部署步驟, (動作和群組) ,在Configuration Manager中,藉由建立SMS_TaskSequence_Condition類別實例,然後將它與步驟建立關聯。 如果條件運算元都符合,則會處理步驟;否則則不是。 條件可以有一或多個運算元,這些運算元是衍生類別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角色型系統管理

另請參閱

物件概觀如何新增作業系統部署工作順序動作
如何使用 Managed 程式碼在 Configuration Manager 中連線到 SMS 提供者
如何使用 WMI 在 Configuration Manager 中連線到 SMS 提供者
工作順序概觀