关于Configuration Manager自定义操作客户端应用程序

Configuration Manager 中的任务序列在客户端部署期间执行自定义操作。 应用程序可以是进程、脚本或其他命令。 应用程序的要求在 MOF) 文件中 (托管对象格式中定义。 示例要求包括操作环境、命令行参数、属性和返回代码。 处理操作时,它们将添加到任务序列环境。

自定义操作 MOF 文件

自定义操作的 MOF 文件类似于以下示例:

[   CommandLine("smsswd.exe /run:%1 abc.exe %2"),
    : (custom ui control and category qualifiers for action)
    ]
class MyCustomAction : SMS_TaskSequence_Action
{
    [TaskSequencePackage, CommandLineArg(1)]
    string          PackageIDForAbcExe;

    [CommandLineArg(2), AllowedLen("1-32000")]
    string          AbcCommandLineArgs;

    [SuccessCodes, Not_Null]
    string          AbcSuccessCodes = "0 3010";

    string         SomeOtherPropertyThatAbcNeeds;

    string          SupportedEnvironment = "WinPEandFullOS";
};

MOF 文件描述了自定义操作应用程序输入、环境、属性和部署包信息所需的信息。

有关详细信息,请参阅关于Configuration Manager自定义操作 MOF 文件

应用程序输入

自定义操作必须无人参与地运行,因此应用程序不应提示用户输入。 应从命令行、任务序列环境或数据文件接收所有输入。

使用运行命令行内置操作在 MOF 文件中设置 操作应用程序的命令行

例如:

CommandLine("smsswd.exe /run:PackageID abc.exe [any abc.exe command line args]"

应用程序处理

任务序列应用程序运行自定义操作。 它必须了解其操作环境,并有权访问任务排序环境变量、报告进度和返回完成代码。

环境

MOF 文件应使用 SMS_TaskSequence_Action 服务器 WMI 类SupportedEnvironment 属性指定操作环境。 可用环境包括 Windows PE (WinPE) 、完整操作系统 () FullOS ,或这两种环境 (WinPEandFullOS) 。

环境的选择取决于环境。 例如,预操作安装配置很可能在 Windows PE 环境中完成。 有关详细信息,请参阅 OS 部署的基础结构要求。 汇报当前安装的操作系统将使用完整的操作系统环境。 例如,软件或驱动程序安装。 可以使用这两种环境设置来执行与操作系统环境无关的任务,例如重新启动或创建网络连接。

正在处理

在处理过程中,可以使用 COM 自动化对象访问 MOF 文件 TSEnvironment 定义的任务序列变量。 有关详细信息,请参阅如何在正在运行Configuration Manager任务序列中使用任务序列变量

如果操作花费很长时间,可以使用 ProgressUI 客户端 COM 自动化类向任务序列环境报告进度并显示进度指示器。 有关详细信息,请参阅关于报告Configuration Manager自定义操作进度

完成

应用程序应在完成时将 SuccessCodes 环境变量设置为返回值。

Return 说明
0 成功
非零 失败

如果应用程序完成后需要重新启动, SMSTSRebootRequested 则应设置环境变量。 有关详细信息,请参阅 任务序列变量。 有关设置环境变量的信息,请参阅如何在正在运行的Configuration Manager任务序列中使用任务序列变量

部署

若要供Configuration Manager使用,自定义操作应用程序必须可从Configuration Manager包中使用。 管理员可以使用 Configuration Manager 控制台或使用编程语言创建包。 有关详细信息,请参阅 如何创建包

包标识符必须可用才能使部署正常工作。 通常,MOF 文件声明一个属性来保存它,如以下示例所示:

[TaskSequencePackage, CommandLineArg(1)]
string PackageIDForAbcExe;

注意

包标识符是 SMS_Package服务器 WMI 类PackageID 属性。

在任务序列编辑器中编辑自定义操作时,将从管理员处获取包标识符。

若要启用此行为,自定义操作控件可以使用其实现中的文本编辑控件从管理员处获取包标识符。 有关使用文本控件的示例,请参阅如何创建Configuration Manager自定义操作控件

管理员使用自定义操作控件时,使用任务序列编辑器将自定义操作控件作为任务序列的一部分进行编辑。 任务序列编辑器保存时,将创建一个 SMS_TaskSequencePackage服务器 WMI 类 来保存任务序列,包括自定义操作。

然后,任务序列包与自定义操作引用的自定义操作包一起播发到客户端。 有关详细信息,请参阅 如何创建播发

在客户端上运行自定义操作时,自定义操作的包标识符作为命令行参数提供,从中提取并运行自定义操作的二进制文件。

包标识符通过使用 /run 命令行参数来提供Smsswd.exe。

网络前分区和分区前设置

如果需要在具有磁盘分区之前和网络连接之前配置磁盘或网络连接,则需要创建一个应用程序来执行这些任务。 应使用 Windows 评估和部署工具包 (ADK) 将应用程序置于自定义启动映像中。 有关详细信息,请参阅 适用于 IT 专业人员的 Windows ADK 方案

注意

将文件添加到启动映像文件可能会增加最低 RAM 要求,并且由于内存不足,可能会导致任务序列以意外方式失败。

然后将映像作为自定义映像导入Configuration Manager。 有关详细信息,请参阅 添加启动映像

应用程序、任何支持文件和自定义SMSTS.INI应放在 Windows 文件夹中。

若要使用应用程序,请在包含分区前/网络步骤的任务序列中使用自定义启动映像。

另请参阅

关于 Configuration Manager 自定义操作

关于Configuration Manager自定义操作 MOF 文件