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

在 Configuration Manager 中,操作系统部署操作在托管对象格式 (MOF) 文件 %ProgramFiles%\Microsoft Configuration Manager\bin\i386\_tasksequenceprovider.mof 中定义。

创建自定义操作时,必须创建声明自定义操作的 MOF 文件。 然后,使用 Mofcomp.exe 将更改添加到 SMS 提供程序。 有关详细信息,请参阅如何为Configuration Manager自定义操作创建 MOF 文件

管理员使用自定义操作控件配置 MOF 文件定义的自定义操作。 有关详细信息,请参阅关于Configuration Manager自定义操作

MOF 文件内容

自定义操作派生自 SMS_TaskSequence_Action 服务器 WMI 类。 MOF 文件声明包括命令行、任务序列变量、类别和自定义操作控件程序集位置的类定义和各种限定符。

类中声明的属性(带 CommandLineArg 限定符的属性除外)在客户端部署期间可用作任务序列变量。 有关详细信息,请参阅如何在正在运行Configuration Manager任务序列中使用任务序列变量

自定义操作的命名空间为 \\root\SMS_Site_SITECODE。 编译 MOF 文件时,自定义操作是 SMS_TaskSequence_Action服务器 WMI 类的子级。

注意

有关 MOF 示例,请参阅在 _tasksequenceprovider.mof 中声明的任务序列操作 MOF。

自定义操作声明的 MOF 文件部分将类似于以下示例:

[   CommandLine("smsswd.exe /run:%1 Application.exe /user:%2"),  
    VariablePrefix("MyCustomActionPrefix"),  
    ActionCategory("My Custom Action Category,7,1"),  
    ActionName{"ConfigMgrTSAction.dll", "ConfigMgrTSAction.Properties.Resources", "ConfigMgrTSAction"},  
    ActionUI{"ConfigMgrTSAction.dll", "ConfigMgrTSAction","ConfigMgrTSActionControl",   
"ConfigureTSActionOptions"}  
    ]  
class ConfigMgrTSActionControl : SMS_TaskSequence_Action  
{  
    [TaskSequencePackage, CommandLineArg(1)]  
    string          PackageIDForApplicationExe;  

    [Not_Null, CommandLineArg(2)]  
    string          User;  

    [VariableName("CustomLocation")]  
    string          Location;  

};  

完整的 MOF 还指定命名空间和其他信息,

有关此示例的完整 MOF,请参阅如何为Configuration Manager自定义操作创建 MOF 文件

命令行

类限定符中介绍了操作的 CommandLine 命令行。 它定义调用的应用程序以及可以提供的各种参数。 对于每个命令行参数,对应类属性上的参数都有一个 CommandLineArg 类限定符。

CommandLine 通常采用以下格式:

CommandLine("smsswd.exe /run:%1 Application.exe %2 %3")

Smsswd.exe用于在包中运行程序。 它需要以下参数:

参数 说明
/run:%1 标识应用程序位于的包。 %1 是包标识符 (SMS_Package服务器 WMI 类PackageID 属性) 。
Application.exe 执行的自定义操作应用程序。
%2 - %n Application.exe的一个或多个命令行参数。

命令行替换字符串 %1、%2 等由 CommandLineArg 类限定符定义。 例如,下面声明 %1。

[TaskSequencePackage, CommandLineArg(1)]  
string          PackageIDForApplicationExe;  

使用自定义操作控件时,可以使用 PackageIDForApplicationExe 属性来配置包标识符。

注意

使用 CommandLineArg 限定符声明的属性在客户端部署期间不能用作任务序列变量。

操作类别

通过使用 ActionCategory 类限定符,可以在任务序列编辑器下拉菜单中将操作与特定类别相关联。

注意

不要使用已由其他操作使用的类别。

语法是:

ActionCategory{CategoryName,ActionOrder,CategoryOrder}

CategoryName
类别名称。

ActionOrder
类别中的操作顺序。

CategoryOrder
所有类别中的类别顺序。

可向其添加操作的默认Configuration Manager类别为:

  • 常规

  • 磁盘

  • 用户状态

  • 图像

  • 司机

  • 设置

    还可以通过在类限定符中 ActionCategory 指定新类别来创建新类别。 例如,以下 MOF 文件创建名为“我的自定义类别”的新类别。 该操作在类别中排在第二位,该类别的总排名第五。

    ActionCategory{"My Custom Category",2,5"},

ActionName

ActionName 限定符定义自定义操作控件名称。 限定符具有以下语法:

ActionName{"Assembly", "Namespace.Properties.Resources", "Control"}

Assembly
包含操作控件的程序集。

Namespace.Properties.Resources
包含显示的操作名称字符串的资源的命名空间。 有关详细信息,请参阅如何创建Configuration Manager自定义操作控件

Control
包含字符串资源的控件。

操作用户界面

ActionUI 限定符定义操作使用的程序集和类的位置。 限定符具有以下语法:

ActionUI{"Assembly","Namespace", "Control", "Option control"}

Assembly
包含操作控件的程序集。

Namespace
操作控件所在的命名空间。

Control
任务序列编辑器中显示的操作控件。 它承载选项控件页。

Option control
用于在任务序列编辑器中管理操作选项的页面。

可以通过包括更多用逗号分隔的控件类名称来实现多个控件选项卡。 例如:

ActionUI{“Assembly”,“Namespace”,“Control1”, “Control2”, “Control3”, “Option control”}

操作变量

限定 VariableName 符用于替代属性的默认变量名称。

可以通过添加 VariableName 类限定符将类属性定义为任务序列变量。 在上面的示例中, 属性 MessageTimeout 是名为 RebootTimeout的操作变量。

VariablePrefix如果使用类限定符,则变量以类限定符值作为前缀。

有关变量用法的详细信息,请参阅如何在正在运行Configuration Manager任务序列中使用任务序列变量

属性

限定 符

有几个限定符可以应用于 MOF 属性。 通常使用以下项:

限定符 说明
CommandLineArg 应在命令行上插入的属性
Not_Null 此属性需要一个值。
ValueMap 指定允许的字符串值的列表。
ValueRange 指定) int 字段 (允许的值的范围。
RequiredIfNull 如果另一个属性为 null,则此属性需要一个值。
TaskSequencePackage 将属性标识为包标识符。
VariableName 为任务序列环境中的 属性指定其他名称。
AllowedLen 指定字符串中的最小和最大字符数。
SuccessCodes 指定可执行文件中的一个或多个指示成功的返回代码。

限制

  • 常规限定符约束可应用于类属性。 例如,在上面的示例中,命令行参数不能是 null。 有关详细信息,请参阅 Windows Management Instrumentation (WMI) SDK

  • 确保在 MOF 文件、自定义操作控件和客户端应用程序之间同步属性名称和限定符。 属性名称必须匹配以及任何限制。 例如,如果某个 int 属性是必需的,并且它必须位于 1 - 512 范围内,则 MOF 文件应具有 Not_NullValueRange 限定符,则自定义控件应确保属性已设置并在范围内,并且客户端应用程序应在使用前验证值。

另请参阅

关于Configuration Manager自定义操作
如何创建Configuration Manager自定义操作控件
如何为Configuration Manager自定义操作创建 MOF 文件
如何在正在运行的Configuration Manager任务序列中使用任务序列变量
关于Configuration Manager自定义操作客户端应用程序