共用方式為


如何設定作系統部署工作順序變數

在 Configuration Manager 中,您可以建立SMS_TaskSequence_SetVariableAction類別的實例,並將其新增至工作順序,以建立作系統部署工作順序變數。 您也可以在工作順序在用戶端上執行時建立工作順序變數。 如需詳細資訊,請參閱 How to Use Task Sequence Variables in a Running Configuration Manager Task Sequence

工作順序變數是您可以透過工作順序步驟存取的名稱/值組。 您也可以建立電腦和集合特定變數。 如需詳細資訊,請參閱如何在 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;
    }
}

此範例方法具有下列參數:

參數 Type 描述
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
- SMS 提供者的有效連線。
taskSequence -管理: WqlConnectionManager
- VBScript: SWbemServices
- 變數加入的工作順序。
variableName -管理: String
- VBScript: String
變數的名稱。
variableValue -管理: String
- VBScript: String
變數的值。

正在編譯程式碼

此 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 提供者概觀如何在執行中 Configuration Manager 工作中使用工作順序變數順序如何從工作順序套件讀取工作順序