mofcomp

Managed 物件格式 (MOF) 編譯器會剖析包含 MOF 語句的檔案,並將檔案中定義的類別和類別實例新增至 WMI 存放庫。 MOF 檔案通常會在安裝所提供的系統期間自動編譯,但您也可以使用此工具來編譯 MOF 檔案。

如需尋找和使用mofcomp.exe的詳細資訊,請參閱 使用 WMI 管理工具。 如需從 WMI 存放庫移除類別和實例的相關資訊,請參閱 pragma deleteclass 預處理器命令。

下列程式碼範例示範如何在檔案上執行 MOF 編譯器。

mofcomp
  [-autorecover]
  [-check]
  [-N:<namespacepath>]
  [-class:createonly | -class:forceupdate | 
   -class:safeupdate | -class:updateonly ] 
  [-instance:updateonly | -instance:createonly]
  [-B:<filename>]
  [-WMI]
  [-P:<Password>]
  [-U:<UserName>]
  [-A:<Authority>]
  [-MOF:<path>] 
  [-MFL:<path>] 
  [-AMENDMENT:<Locale>]
  [-ER:<ResourceName>]
  [-L:<ResourceLocale>] 
  <MOFfile>

交換器

-autorecover

將具名 MOF 檔案新增至存放庫復原期間編譯的檔案清單。 自動回復 MOF 檔案的清單會儲存在登錄機碼中:

\ HKEY_LOCAL_MACHINE軟體\微軟\WBEM\CIMOM\

此登錄專案中列出的 MOF 檔案必須位於本機電腦上,因為使用 autorecover 命令的 MOF 檔案無法復原位於遠端電腦上的 MOF 檔案。

注意

若要確保 Managed 物件的所有 WMI 類別定義在 WMI 失敗並重新啟動時會還原至WMI 存放庫,請使用Managed 物件格式中的#pragma自動回復預處理器指示, (MOF) 檔案。

-check

要求編譯器只執行語法檢查,並列印適當的錯誤訊息。 沒有其他參數可以與此交換器搭配使用。 使用此參數時,不會建立與 Windows Management Instrumentation (WMI) 的連線,也不會修改 WMI 存放庫。

-N: <namespacepath>

要求編譯器將 MOF 檔案載入指定為 *namespacepath* 的命名空間。 編譯的 MOF 會載入預設 Mofcomp 命名空間 root\\default,除非使用此參數。 您也可以在 MOF 檔案中插入預處理器命令 **\#pragma命名空間 (「/namespace path#**」) **,以達到相同的效果。 如果使用 **-N:** 參數和 \#pragma 命名空間 命令,則會優先使用 \#**pragma 命名空間** **autorecover** 。 在此情況下,將 MOF 編譯為另一個命名空間的唯一方法是編輯 MOF 檔案,並變更 \#**pragma 命名空間** 命令。 您可以使用 \\\\machinename\\root\\default 來指定遠端電腦。

-class:createonly

要求編譯器不會對現有類別進行任何變更。 使用此參數時,如果 MOF 檔案中指定的類別已經存在,編譯作業就會終止。

-class:forceupdate

當衝突的子類別存在時,強制更新類別。 例如,假設類別限定詞是在子類別中定義,而基類會嘗試新增相同的限定詞。 在 -class:forceupdate 模式中,MOF 編譯器藉由刪除子類別中的衝突限定詞來解決此衝突。 如果子類別有 實例,強制更新就會失敗。

-class:safeupdate

即使有子類別,仍允許更新類別,只要變更不會與子類別發生衝突即可。 例如,此旗標允許將新的屬性新增至先前未在子類別中提及的基類。 如果子類別有實例,更新就會失敗。

-class:updateonly

要求編譯器不會建立任何新的類別。 使用此參數時,如果 MOF 檔案中指定的類別不存在,編譯作業就會終止。

-instance:updateonly

要求編譯器不會建立任何新的實例。 使用此參數時,如果 MOF 檔案中指定的實例不存在,編譯作業就會終止。

-instance:createonly

要求編譯器不會對現有實例進行任何變更。 使用此參數時,如果 MOF 檔案中指定的實例已經存在,編譯作業就會終止。

-B: <filename>

要求編譯器 使用檔案名建立 MOF 檔案的二進位版本,而不需對 WMI 存放庫進行任何修改。

如果您使用-B: <filename>選項來建立二進位 MOF 檔案,則只有預設限定詞類別會儲存在 WMI 存放庫中。

二進位 MOF 格式是將 WDM 驅動程式與 MOF 合併為資源的中繼格式。 二進位 MOF 代表類別和實例,就像文字 MOF 檔案一樣,而且會在儲存在磁片上之前壓縮。

-WMI

要求編譯器執行 WMI 語法檢查。 -B:參數必須與此參數搭配使用。 -WMI參數僅用於建置二進位 MOF 檔案以供 WDM 設備磁碟機使用。 此參數會叫用個別的二進位 MOF 檔案檢查程式,它會在建立二進位 MOF 檔案之後執行。

-P: <Password>

指定 [密碼 ] 作為登入時要輸入的電腦使用者密碼。

-U: <UserName>

指定 UserName 作為使用者登入的名稱。

-A: <Authority>

指定 [授權單位 ] 作為 (功能變數名稱的授權單位,) 登入 WMI 時使用。

-MOF: <path>

語言中性輸出的名稱。 與 -AMENDMENT 參數搭配使用,以指定將產生之語言中性 MOF 檔案的名稱。

-MFL: <path>

語言特定輸出的名稱。 與 -AMENDMENT 參數搭配使用,以指定將產生之語言特定 MOF 檔案的名稱。

-AMENDMENT: <Locale>

將 MOF 檔案分割成語言中性與特定版本。 MOF 編譯器會建立已移除所有修改限定詞的 MOF 檔案語言中性格式。 MOF 檔案的當地語系化版本也會使用 MFL 副檔名建立。 Locale參數會指定包含當地語系化類別定義的子命名空間名稱。 Locale參數的格式是MS_xxx其中 xxx 是Windows LCID 的十六進位值。 例如,美國英文的地區設定MS_409。

-ER <ResourceName>

從具名資源擷取二進位 MOF。 這個參數會從 WMI 存放庫中的 類別取得二進位 MOF,而 -B 參數會從 MOF 檔案建立二進位 MOF 格式。

-L: <ResourceLocale>

選擇性。 搭配 -ER 參數使用時,從二進位 MOF 擷取當地語系化的 MOF 描述。

<MOFfile>

要剖析的檔案名。

傳回值

作為其第一個作業,MOF 編譯器會在 MOF 檔案上執行語法檢查。 如果編譯器發現任何錯誤,它會列印錯誤訊息,而進程會終止。

MOF 編譯器可以傳回下列值:

0

MOF 編譯作業成功。

1

MOF 編譯器無法與 WMI 伺服器連線。 這是因為語意錯誤,例如與現有 WMI 存放庫不相容,或實際錯誤,例如 WMI 伺服器啟動失敗。

2

一或多個命令列參數無效。

3

發生 MOF 語法錯誤。

如果 MOF 檔案已正確剖析,但嘗試執行命令列參數禁止的作業,編譯器會傳回 WMI 所產生的錯誤碼,而不是上述清單中所列的任何傳回碼。 例如,指定 -instance:updateonly 參數且 MOF 檔案嘗試建立實例時,會傳回 WMI 錯誤碼。

如果 #pragma自動復原 預處理器語句不在 檔案中,則會傳回下列警告:

WARNING: FileYourMof.Mof does not contain #PRAGMA AUTORECOVER.
If the WMI repository is rebuilt in the future, the contents of this 
MOF file   will not be included in the new WMI repository.
To include this MOF file when the WMI Repository is automatically 
reconstructed, place the #PRAGMA AUTORECOVER statement on the first 
line of the MOF file.

備註

MOF 編譯器可在 %Windir%\System32\wbem 目錄中取得。 您必須將 MOF 檔案指定為 MOF 編譯器的 參數。 如果您想要在 CIM 存放庫必須自動復原時自動重新編譯 MOF 檔案,您也可以指定自動復原切換。 如需詳細資訊,請在命令提示字元中輸入 Mofcomp /?

使用 Unicode 字元集的 MOF 檔案包含簽章做為檔案的前兩個位元組。 此簽章是 U+FFFE 或 U+FEFF,視檔案的位元組順序而定。

剖析程式中沒有發生錯誤時,MOF 編譯器會連線到在本機電腦上執行的 WMI 伺服器,除非指定 -check 參數。 MOF 檔案中定義的類別和實例會新增至 WMI 存放庫。

在更新 WMI 存放庫時發生錯誤時,編譯器不會嘗試在編譯器開始處理之前,將存放庫傳回其狀態。

Windows 8:安裝提供者時,mofcomp 會將 [Key] 和 [Static] 限定詞視為 true,不論其實際值為何。 如果其他限定詞存在,但未明確設定為 true,則會將其視為 false。

規格需求

需求
最低支援的用戶端
Windows Vista
最低支援的伺服器
Windows Server 2008

另請參閱

pragma 命名空間

編譯 MOF 檔案

編譯當地語系化 MOF 檔案

註冊提供者

IMOFCompiler::CompileFile