オペレーティング システム展開タスク シーケンス変数を設定する方法

Configuration Manager では、SMS_TaskSequence_SetVariableAction クラスのインスタンスを作成し、タスク シーケンスに追加することで、オペレーティング システム展開タスク シーケンス変数を作成します。 クライアントでタスク シーケンスの実行中にタスク シーケンス変数を作成することもできます。 詳細については、「実行中の Configuration Manager タスク シーケンスでタスク シーケンス変数を使用する方法」を参照してください。

タスク シーケンス変数は、タスク シーケンスのステップごとにアクセスできる名前と値のペアです。 コンピューター固有の変数とコレクション固有の変数を作成することもできます。 詳細については、「Configuration Manager でコレクション変数を作成する方法」および「Configuration Manager でコンピューター変数を作成する方法」を参照してください。

注:

SMS_TaskSequence_SetVariableAction クラスで設定された変数は、他の場所で設定された変数をオーバーライドします。 たとえば、コレクション変数と SMS_TaskSequence_SetVariableAction が同じ名前の場合、SMS_TaskSequence_SetVariableAction変数の値が優先されます。

タスク シーケンス変数を設定するには

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

  2. タスク シーケンス変数を追加するタスク シーケンスを取得します。 詳細については、「 オペレーティング システム展開タスク シーケンスを作成する方法」を参照してください。

  3. SMS_TaskSequence_SetVariableAction のインスタンスを作成します。

  4. 追加する変数の VariableName プロパティと VariableValue プロパティを設定します。

  5. タスク シーケンスに SMS_TaskSequence_SetVariableAction オブジェクトを追加します。

次の例では、タスク シーケンス変数の名前と値を設定します。

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

Sub AddTaskSequenceVariable(connection, taskSequence, variableName, variableValue)

    Dim variable
    Dim steps

    Set variable = connection.Get("SMS_TaskSequence_SetVariableAction").SpawnInstance_

    variable.Name="MyTaskSequenceVariable"
    variable.Description = "A task sequence variable"
    variable.Enabled=True
    variable.ContinueOnError=False
    variable.VariableName=variableName
    variable.VariableValue=variableValue

    steps= Array(taskSequence.Steps)

    ReDim steps (UBound (taskSequence.Steps)+1)

    taskSequence.Steps(UBound(steps))=variable

End Sub
public void AddTaskSequenceVariable(
    WqlConnectionManager connection,
    IResultObject taskSequence,
    string variableName,
    string variableValue)
{
    try
    {
        // Create the task sequence variable object.
        IResultObject variable = connection.CreateEmbeddedObjectInstance("SMS_TaskSequence_SetVariableAction");

        // Populate the properties.
        variable["Name"].StringValue = "MyTaskSequenceVariable";
        variable["ContinueOnError"].BooleanValue = false;
        variable["Description"].StringValue = "A task sequence variable set with SMS_TaskSequence_SetVariableAction";
        variable["Enabled"].BooleanValue = true;
        variable["VariableName"].StringValue = variableName;
        variable["VariableValue"].StringValue = variableValue;

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

        array.Add(variable);
        taskSequence.SetArrayItems("Steps", array);
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed to set task sequence variable: " + e.Message);
        throw;
    }
}

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

パラメーター 説明
connection - 管理対象: WqlConnectionManager
- VBScript: SWbemServices
- SMS プロバイダーへの有効な接続。
taskSequence - 管理対象: WqlConnectionManager
- VBScript: SWbemServices
- 変数が追加されるタスク シーケンス。
variableName - 管理対象: String
- VBScript: String
変数の名前。
variableValue - 管理対象: 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 プロバイダーに接続する方法タスク シーケンスの概要 実行中の Configuration Manager タスクでタスク シーケンス変数を使用する方法シーケンス: タスク シーケンス パッケージからタスク シーケンスを読み取る方法