Active-Directory

導入 GPO WMI 過濾器 .mof 文件

  • July 3, 2018

我有幾個導出的 GPO WMI 過濾器作為.MOF文件從 AD 域中過濾出來。我看到我可以使用組策略管理控制台導入它們,但更願意通過腳本重新導入它們以自動化整個過程。

我還沒有找到任何關於它如何工作的像樣的文件,TechNet 1上可用的腳本主要是通過從源目錄讀取屬性值並將它們寫入目標。

如果需要,我想保留使用 GPMC 手動恢復 WMI 過濾器備份的能力。因此,需要一種.mof在 WMI 過濾器導出時簡單地使用 GPMC 創建的文件的方法。


1有趣的是,多年來,不同的 Microsoft 員工顯然都在解決類似的問題,他們都採用了在 TechNet 上發布的類似解決方案:

A.mofmofcomp實用程序的輸入文件,存在於每個 Windows 系統上。您只需提供文件名和相應的命名空間作為參數即可使其工作。

文件名顯然是最簡單的部分 - 這是您在導出 WMI 過濾器時指定的內容。但mofcomp不會在.mof沒有正確命名空間的情況下執行導出,因為它不知道在哪裡可以找到正在實例化的 MSFT_SomFilter 類:

C:\Users\john>mofcomp wmi-filter-export.mof
Microsoft (R) MOF Compiler Version 10.0.14393.0
Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
Parsing MOF file: wmi-filter-export.mof
MOF file has been successfully parsed
Storing data in the repository...
An error occurred while resolving the alias for object 1 defined on lines 2 - 18:
0X80041002 Class, instance, or property 'MSFT_SomFilter' was not found.
Compiler returned error 0x80041002

只需在網上搜尋類名MSFT_SomFilter即可獲得MSDN 上類文件的連結,該連結很方便地指出:

| Namespace |  Root\policy |

因此,只需mofcomp使用適當的命名空間呼叫並查看它的工作情況。您可能需要在具有管理權限(即提升)的域控制器上執行它。

C:\Users\john>mofcomp -N:root\Policy wmi-filter-export.mof
Microsoft (R) MOF Compiler Version 10.0.14393.0
Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
Parsing MOF file: wmi-filter-export.mof
MOF file has been successfully parsed
Storing data in the repository...
WARNING: File wmi-filter-export.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.
Done!

ID = <GUID>請注意,如果與該行定義的 GUID 相同的 WMI 篩選器.mof已經存在,它將被覆蓋。如果 GUID 尚未使用,將創建一個新的 WMI 篩選器。

#PRAGMA AUTORECOVER警告在這裡沒有實質內容 - 沒有定義新的類.mof,因此在 WMI 儲存庫重建的情況下不會失去任何內容。

引用自:https://serverfault.com/questions/919297