mofcomp
Managed 物件格式 (MOF) 編譯程式會剖析包含 MOF 語句的檔案,並將檔案中定義的類別和類別實例新增至 WMI 存放庫。 MOF 檔案通常會在安裝提供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\SOFTWARE\Microsoft\WBEM\CIMOM\
此登錄專案中所列的MOF檔案必須位於本機電腦上,因為使用 自動復原 命令的MOF檔案無法復原位於遠端電腦上的MOF檔案。
注意
若要確保 Managed 物件的所有 WMI 類別定義都會還原至 WMI 存放庫, 如果 WMI 失敗並重新啟動,請使用 Managed 物件格式 (MOF) 檔案中的 #pragma 自動復原 預處理器指示。
-
-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:<檔名>
-
要求編譯程式使用名稱 檔名 建立MOF檔案的二進制版本,而不需對WMI存放庫進行任何修改。
如果您使用 -B:<檔名> 選項來建立二進位MOF檔案,則只有預設限定符類別會儲存在WMI存放庫中。
二進位MOF格式是將WDM驅動程式與MOF合併為資源的中繼格式。 二進位MOF代表類別和實例,就像MOF檔案的文字一樣,而且會在儲存在磁碟上之前壓縮。
-
-WMI
-
要求編譯程式執行 WMI 語法檢查。 -B: 參數必須與此參數搭配使用。 -WMI 參數僅用於建置二進位MOF檔案以供 WDM 設備驅動器使用。 此參數會叫用個別的二進位MOF檔案檢查程式,此檢查程式會在建立二進位MOF檔案之後執行。
-
-P:<密碼>
-
指定 密碼 做為登入時計算機使用者輸入的密碼。
-
-U:<UserName>
-
指定 UserName 作為使用者登入的名稱。
-
-A:<授權單位>
-
指定 授權單位 作為登入 WMI 時要使用的授權單位(功能變數名稱)。
-
-MOF:<路徑>
-
語言中性輸出的名稱。 與 -AMENDMENT 參數搭配使用,以指定將產生之語言中性MOF檔案的名稱。
-
-MFL:<路徑>
-
語言特定輸出的名稱。 與 -AMENDMENT 參數搭配使用,以指定將產生之語言特定MOF檔案的名稱。
-
-AMENDMENT:<地區設定>
-
將MOF檔案分割成語言中性版本和 -specific 版本。 MOF 編譯程式會建立MOF檔案的語言中性形式,而MOF檔案已移除所有已修改的限定符。 MOF 檔案的當地語系化版本也會使用 MFL 擴展名來建立。 Locale 參數會指定包含當地語系化類別定義的子命名空間名稱。 Locale 參數的格式MS_xxx其中 xxx 是 Windows LCID 的十六進位值。 例如,美式英文的地區設定是MS_409。
-
-ER <ResourceName>
-
從具名資源擷取二進位MOF。 當 -B 參數從MOF檔案建立二進位MOF格式時,此參數會從WMI存放庫中的 類別取得二進位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編譯程式的參數。 如果您想要自動重新編譯MOF檔案,則必須自動復原 CIM 存放庫,您也可以指定自動復原切換。 如需詳細資訊,請輸入 Mofcomp /?在命令提示字元中。
使用 Unicode 字元集的 MOF 檔案包含簽章做為檔案的前兩個字節。 此簽章是 U+FFFE 或 U+FEFF,視檔案的位元組順序而定。
剖析程式中沒有發生任何錯誤時,除非指定 -check 參數,否則MOF編譯程式會連線到本機電腦上執行的WMI伺服器。 MOF 檔案中定義的類別和實例會新增至 WMI 存放庫。
更新 WMI 存放庫時發生錯誤時,編譯程式不會嘗試在編譯程式開始處理之前,將存放庫傳回其狀態。
Windows 8: 安裝提供者時,mofcomp 會將 [Key] 和 [Static] 限定符視為 true,不論其實際值為何。 如果其他限定符存在,但未明確設定為 true,則會將其視為 false。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 |
Windows Vista |
最低支援的伺服器 |
Windows Server 2008 |