Group-Policy
WMI 查詢以查找缺少組策略的驅動器號
我正在建構一個組策略以應用於我組織內的一部分使用者。這部分使用者沒有在其 Active Directory 對像上設置主目錄,而其他使用者則分配了 I:\ 驅動器。
我需要找到一個 WMI 查詢,它允許使用者配置 GPO 應用於沒有 I:\ 驅動器的使用者。
我可以很容易地找到它的倒數:
Select * From Win32_LogicalDisk Where DeviceID = 'I:'
但是如果我將這個 WHERE DeviceID <> ‘I:' 設為,它會返回 C:、D: 和其他映射驅動器。
我想過用這樣的方式查詢使用者個人資料:
select RoamingPath from Win32_UserProfile where RoamingPath <> '\\*'
但是,這會返回系統帳戶和本地管理員配置文件的許多結果,而不是登錄使用者。
我讀過可以直接查詢 AD,但是下面的命令給了我一個“無效類”錯誤,我不知道它是否適用於登錄使用者:
select * from ds_user where ADSIPath = LDAP://OU=CA,DC=global,DC=opus AND DS_homeDirectory=’*’
我認為理想情況下,這將通過使用 Win32_LogicalDisk 來計算驅動器總數,第二個查詢來獲取 I:\ 驅動器的計數(1 或 0),然後從第一個結果中減去第二個結果來解決。如果結果是 = 第一個查詢,我有我的一組使用者。到目前為止,在 GPO wmi 過濾器中找到執行此操作的語法還沒有運氣。
我已經確定完全按照我在問題中定義的方式完成此操作是不可能的。
我遇到的兩個最佳選擇是:
- 反向 WMI 過濾器- 為每個使用者/PC 創建一個環境變數,根據所需的邏輯生成結果。然後使用正常 WMI 查詢來過濾該環境變數。
- 計劃的 PowerShell 查詢- 正如 Yanick 在評論中建議的那樣,創建一個 PowerShell 查詢,該查詢根據所需的邏輯(即 homeDrive 屬性為空)過濾使用者,然後將這些使用者帳戶添加到一個組中,然後可用於 GPO 上的安全過濾. 然後將此 PowerShell 安排在 LAN 伺服器上重複執行。
我在我的環境中選擇了選項 #2。