オペレーティング システム展開タスク シーケンス ステップに条件を追加する方法
条件は、SMS_TaskSequence_Condition クラス インスタンスを作成し、それをステップに関連付けることによって、Configuration Managerのオペレーティング システムの展開手順 (アクションとグループ) に追加できます。 条件オペランドがすべて満たされている場合は、ステップが処理されます。それ以外の場合はではありません。 条件には、SMS_TaskSequence_Condition派生クラスのインスタンスである 1 つ以上のオペランドを指定できます。 オペランドの演算子は、 SMS_TaskSequence_ConditionOperatorのインスタンスで指定します。
ステップに条件を追加するには
SMS プロバイダーへの接続を設定します。 詳細については、「 SMS プロバイダーの基礎」を参照してください。
タスク シーケンス ステップ オブジェクトを取得します。 これは、グループの SMS_TaskSequence_Group オブジェクト、またはアクションの SMS_TaskSequenceAction 派生クラス オブジェクトです。詳細については、「 オペレーティング システム展開タスク シーケンス アクションを追加する方法」を参照してください。
の
SMS_TaskSequence_Condition
インスタンスを作成して、新しい条件を作成します。SMS_TaskSequence_ConditionExpression派生クラスのインスタンスを作成して、条件の式を作成します。 たとえば、 SMS_TaskSequence_RegistryConditionExpression。
式のプロパティを設定します。
条件オペランド プロパティに式 を 追加します。
タスク シーケンス ステップ クラスの 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 プロバイダーに接続する方法
タスク シーケンスの概要