关于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自定义作客户端应用程序