如何设置操作系统部署任务序列变量
在 Configuration Manager 中,通过创建 SMS_TaskSequence_SetVariableAction 类的实例并添加到任务序列来创建操作系统部署任务序列变量。 还可以在客户端上运行任务序列时创建任务序列变量。 有关详细信息,请参阅如何在正在运行Configuration Manager任务序列中使用任务序列变量。
任务序列变量是可以通过任务序列步骤访问的名称/值对。 还可以创建特定于计算机和集合的变量。 有关详细信息,请参阅如何在 Configuration Manager 中创建集合变量和如何在 Configuration Manager 中创建计算机变量。
注意
使用 SMS_TaskSequence_SetVariableAction 类设置的变量将替代在其他位置设置的变量。 例如,如果集合变量和SMS_TaskSequence_SetVariableAction具有相同的名称,则 SMS_TaskSequence_SetVariableAction 变量的值优先。
设置任务序列变量
设置与 SMS 提供程序的连接。 有关详细信息,请参阅 SMS 提供程序基础知识。
获取要向其添加任务序列变量的任务序列。 有关详细信息,请参阅 如何创建操作系统部署任务序列。
为要添加的变量设置 VariableName 和 VariableValue 属性。
将 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任务序列中使用任务序列变量
如何从任务序列包读取任务序列