如何设置操作系统部署任务序列变量

在 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 中的短信提供程序
任务序列概述如何在正在运行Configuration Manager任务序列中使用任务序列变量
如何从任务序列包读取任务序列