共用方式為


關於Configuration Manager自訂動作 MOF 檔案

在Configuration Manager中,作業系統部署動作定義于受控物件格式 (MOF) 檔案 %ProgramFiles%\Microsoft Configuration Manager\bin\i386\_tasksequenceprovider.mof 中。

當您建立自訂動作時,必須建立宣告自訂動作的 MOF 檔案。 然後使用Mofcomp.exe將變更新增至 SMS 提供者。 如需詳細資訊,請參閱 How to Create a MOF File for a Configuration Manager Custom Action

系統管理員會使用自訂動作控制項,設定 MOF 檔案所定義的自訂動作。 如需詳細資訊,請參閱關於Configuration Manager自訂動作

MOF 檔案內容

自訂動作衍生自SMS_TaskSequence_Action 伺服器 WMI 類別。 MOF 檔案宣告包含命令列、工作順序變數、類別和自訂動作控制群組件位置的類別定義和各種限定詞。

在用戶端部署期間,除了具有限定詞的屬性之外,類別中宣告的 CommandLineArg 屬性可以做為工作順序變數使用。 如需詳細資訊,請參閱How to Use Task Sequence Variables in a Running Configuration Manager Task Sequence

自訂動作的命名空間是 \\root\SMS_Site_SITECODE。 編譯 MOF 檔案時,自訂動作會成為 SMS_TaskSequence_Action Server 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,請參閱How to Create a MOF File for a Configuration Manager Custom Action

命令列

動作的命令列會在類別限定詞中 CommandLine 描述。 它會定義所呼叫的應用程式,以及可提供的各種引數。 針對每個命令列引數,對應的類別屬性上都有 CommandLineArg 引數的類別限定詞。

CommandLine 通常會採用下列形式:

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

Smsswd.exe用來在封裝內執行程式。 它需要下列引數:

參數 描述
/run:%1 識別應用程式所在的封裝。 %1 是伺服器WMI 類別PackageID 屬性 (SMS_Package套件識別碼) 。
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如果使用類別限定詞,變數前面會加上類別限定詞值。

如需變數使用方式的詳細資訊,請參閱How to Use Task Sequence Variables in a Running Configuration Manager Task Sequence

屬性

限定 符

有數個限定詞可以套用至 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自訂動作用戶端應用程式