WMI Filter for GPO 群組原則

前言

簡單說,本文的出現是因為最近遇到了在 VDI 虛擬桌面環境中,雖然已經設定 Windows GPO 群組原則來套用相關機制,但卻碰到了個難題。因為環境當中實體主機也有加入 Windows AD 網域,且 VDI 虛擬桌面環境中因為要提升使用者操作體驗,所以有導入「漫遊使用者設定檔 (Roaming User Profile)」機制。

然而卻產生一個難題,當實體主機及 VDI VM 虛擬主機的 GPO 發生衝突時非常難以處理,舉例來說 在 VDI 虛擬桌面環境中,為了避免使用者不小心將 VDI VM 虛擬主機關機,增加 vSphere ESXi 虛擬化平台不必要的工作負載,因此在 GPO 中設定當登入後,按下左下角的開始圖示後只會剩下「登出」選項,但是這樣的 GPO 設定會造成登入實體主機時的困擾。

因此,本文主要實作的項目是,透過「WMI 篩選器 (WMI Filter)」的過濾機制,當使用者登入的是 VDI VM 虛擬主機時,才會套用該 GPO 群組原則。若是使用者登入實體主機時,則「」會套用GPO 群組原則。



實作環境

  • VMware Horizon View 5.1 (VDI 虛擬化平台)
  • Windows Server 2008 R2 (Windows AD / GPO)
  • Windows 7 (VDI VM、實體主機)



安裝及設定

測試 WMI 篩選器功能

因為本文主要處理的部份是,希望實體主機「」要套用到 VDI VM 虛擬主機的 GPO 群組原則,所以透過 WMI 篩選器內「ComputerSystem \ Model」剛好可以過濾出這樣的需求 (詳細語法請參考 Microsoft MSDN - Win32 Provider)。要測試 WMI 篩選器的語法 ,其實有很多種方式: 命令提示字元、PowerShell、WMI Code Creator

命令提示字元
您可以登入 VDI VM 虛擬主機,開啟命令提示字元後輸入指令「wmic ComputerSystem get model」,便可以得到 VDI VM 虛擬主機的 Model 資訊,此實作環境為「VMware Virtual Platform」。




PowerShell
您可以登入 VM 虛擬主機,開啟 PowerShell 後輸入指令「gwmi -query 'Select * From Win32_ComputerSystem'」,便可以得到 VDI VM 虛擬主機的 Model 資訊,此實作環境為「VMware Virtual Platform」。




WMI Code Creator
您可以下載由微軟官方推出的 WMI Code Creator 工具,此工具為綠色軟體不需要安裝,首先在 Namespace 欄位選擇預設的「root\CIMV2」,接著在 Classes 欄位選擇此次需要的「Win32_ComputerSystem」項目,接著點選「Model」項目,此時在右方的 Generated Code 區塊會顯示相關的程式碼內容 (你可以點選 Code Language 進行程式碼內容的切換),若要測試看看所選的結果,請按下「Excute Code」鈕,同樣的可以看到此實作環境環境的「VMware Virtual Platform」。






新增 WMI 篩選器

請登入 Windows AD 網域伺服器,開啟群組原則管理後依序點選「樹系 > 網域 > 站台 > WMI 篩選器 > 新增」,準備新增 WMI 篩選器項目。


名稱 欄位中填入此 WMI 篩選器的名稱,此實作填入「VDI Machine Only」然後按下 新增 鈕,填入此次的命名空間「root\CIMv2」以及 WMI 查詢內容「Select * From WIn32_ComputerSystem Where Model = "VMware Virtual Platform"」後,按下 儲存 鈕。






選擇要套用 WMI 篩選器的 GPO

完成後,便可以選擇要套用剛才 WMI 篩選器項目的 GPO (請注意!! 一個 GPO 只能套用一個 WMI 篩選器),點選此次實作環境的 GPO 項目「View-Student」,然後在 WMI 篩選區塊中的下拉式選單選擇剛才建立的「VDI Machine Only」進行套用的動作。






登入 VDI VM 進行功能驗證

透過 VMware Horizon View Client 登入 VDI VM 虛擬主機後,開啟命令提示字元後輸入指令「wmic ComputerSystem get model」,確認 VDI VM 虛擬主機的 Model 資訊,此實作環境為「VMware Virtual Platform」。


接著輸入指令「gpresult /z | more」,確認仍「」套用「View-Student」GPO 群組原則。






登入實體主機進行功能驗證

同樣的以使用者帳號登入實體主機,開啟命令提示字元後輸入指令「wmic ComputerSystem get model」,確認實體主機的 Model 資訊,此實作環境為「G33M-DS2R」。


接著輸入指令「gpresult /z | more」,確認 GPO 群組原則是否「」會套用「View-Student」,從結果中可以看到已經被 WMI 篩選器功能所過濾掉,所以便不會套用到適合用於 VDI 虛擬桌面環境的 GPO。