如何將條件新增至作業系統部署工作順序步驟
條件可以新增至作業系統部署步驟, (動作和群組) ,在Configuration Manager中,藉由建立SMS_TaskSequence_Condition類別實例,然後將它與步驟建立關聯。 如果條件運算元都符合,則會處理步驟;否則則不是。 條件可以有一或多個運算元,這些運算元是衍生類別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;
}
}
範例方法具有下列參數:
參數 | 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 提供者
工作順序概觀