WMI Group Policy Filter ที่เปรียบเทียบ Win32_OperatingSystem.BuildNumber ไม่ทำงานใน Windows 10 เพราะ BuildNumber เป็น String ไม่ใช่ Integer ทำให้ "10xxx" น้อยกว่า "9600" (String Comparison)
ปัญหา
Filter: Select BuildNumber from Win32_OperatingSystem WHERE BuildNumber >= 9200
คาดหวัง: ใช้ได้กับ Win 8 (9200), 8.1 (9600), 10 (10240+)
จริง: Windows 10 Build (10240, 10586, 14393...) ถูก exclude เพราะ "1" < "9"
วิธีแก้: ใช้ Filter ที่จัดการ String Comparison ให้ถูกต้อง
Select BuildNumber from Win32_OperatingSystem WHERE BuildNumber >= 10000 AND BuildNumber LIKE "%[123456789][0123456789][0123456789][0123456789][0123456789]%" OR BuildNumber >= 9200 AND BuildNumber LIKE "%[123456789][0123456789][0123456789][0123456789]%"
หมายเหตุ: มีหลายวิธี Force String Comparison ให้ทำงานถูกต้อง ใช้วิธีไหนก็ได้ ตัวอย่างข้างต้นทำงานได้จริง
ตาราง Build Number อ้างอิง
| Build | Version |
|---|---|
| 9200 | Windows 8 |
| 9600 | Windows 8.1 |
| 10240 | Windows 10 RTM |
| 10586 | 1511 |
| 14393 | 1607 |
| 15063 | 1703 |
| 16299 | 1709 |
| 17134 | 1803 |
| 17763 | 1809 |
| 18362 | 1903 |