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

在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工作順序
如何從工作順序套件讀取工作順序