次の方法で共有


オペレーティング システムの展開タスク シーケンス アクションを追加する方法

オペレーティング システムの展開タスク シーケンス アクションは、SMS_TaskSequence_Action派生クラスのインスタンスを作成し、タスク シーケンスの手順に追加することで、Configuration Managerタスク シーケンスに追加されます。

注:

Configuration Managerには、使用できる組み込みのアクションが多数含まれています。 たとえば、コマンド ライン アクション クラスは SMS_TaskSequence_RunCommandLineAction。 これらのクラスは 、SMS_TaskSequence_Action クラスから派生します。

SMS_TaskSequenceAction は、アクションとグループの両方の基底クラスである SMS_TaskSequence_Step クラスから派生します。 タスク シーケンスは、そのステップを SMS_TaskSequence_Stepの配列に格納するため、アクションとグループを一緒に格納できます。

タスク シーケンス アクションを追加するには

  1. SMS プロバイダーへの接続を設定します。 詳細については、「 SMS プロバイダーの基礎」を参照してください。

  2. タスク シーケンス (SMS_TaskSequence) オブジェクトを作成します。 詳細については、「 オペレーティング システム展開タスク シーケンスを作成する方法」を参照してください。

  3. 必要なアクション のSMS_TaskSequenceAction 派生クラス インスタンス ( SMS_TaskSequence_RunCommandLineActionなど) を作成します。

  4. 必要に応じてアクションを設定します。

  5. タスク シーケンスの手順にアクションを追加します。 これは、 SMS_TaskSequence) クラスの Steps プロパティに格納されます。

次のメソッド例では、コマンド ライン アクションを作成し、指定されたタスク シーケンスに追加します。

サンプル コードの呼び出しについては、「Configuration Manager コード スニペットの呼び出し」を参照してください。

Sub AddTaskSequenceActionCommandLine(connection, taskSequence, name, description)

    Dim steps
    Dim action

    Set action = connection.Get("SMS_TaskSequence_RunCommandLineAction").SpawnInstance_

    action.CommandLine = "cmd /c Echo Hello"
    action.Name=name
    action.Description=description
    action.Enabled=True
    action.ContinueOnError=False

      If IsNull(taskSequence.Steps) Then
        steps = Array(action)
        taskSequence.Steps=steps
    Else
        steps= Array(taskSequence.Steps)
        ReDim steps (UBound (taskSequence.Steps)+1)
        taskSequence.Steps(UBound(steps))=action
    End if

End Sub

public IResultObject AddTaskSequenceActionCommandLine(
    WqlConnectionManager connection,
    IResultObject taskSequence,
    string name,
    string description)
{
    try
    {
        // Create the new step.
        IResultObject ro;

        ro = connection.CreateEmbeddedObjectInstance("SMS_TaskSequence_RunCommandLineAction");
        ro["CommandLine"].StringValue = @"cmd /c Echo Hello";

        ro["Name"].StringValue = name;
        ro["Description"].StringValue = description;
        ro["Enabled"].BooleanValue = true;
        ro["ContinueOnError"].BooleanValue = false;

        // Add the step to the task sequence.
        List<IResultObject> array = taskSequence.GetArrayItems("Steps");

        array.Add(ro);

        taskSequence.SetArrayItems("Steps", array);

        return ro;
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed to add action: " + e.Message);
        throw;
    }
}

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

パラメーター 説明
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
SMS プロバイダーへの有効な接続。
taskSequence -管理: IResultObject
- VBScript: SWbemObject
有効なタスク シーケンス。
Name -管理: String
- VBScript: String
新しいアクションの名前。
Description -管理: String
- VBScript: String
アクションの説明。

コードのコンパイル

この 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 プロバイダーに接続する方法 オペレーティング システム展開タスク シーケンス グループを作成する方法オペレーティング システムの展開タスク シーケンス アクションのタスク シーケンスの概要を削除する方法