次の方法で共有


オペレーティング システム展開タスク シーケンス ステップに条件を追加する方法

条件は、SMS_TaskSequence_Condition クラス インスタンスを作成し、それをステップに関連付けることによって、Configuration Managerのオペレーティング システムの展開手順 (アクションとグループ) に追加できます。 条件オペランドがすべて満たされている場合は、ステップが処理されます。それ以外の場合はではありません。 条件には、SMS_TaskSequence_Condition派生クラスのインスタンスである 1 つ以上のオペランドを指定できます。 オペランドの演算子は、 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. 条件オペランド プロパティに式 追加します。

  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;  
    }  
}  

このメソッドの例には、次のパラメーターがあります。

パラメーター 説明
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 プロバイダーに接続する方法
タスク シーケンスの概要