ในโพสต์ของวันนี้ เราจะระบุสาเหตุและแก้ไขปัญหาของตัวกรองนโยบายกลุ่มของ Windows Management Instrumentation (WMI) ที่เปรียบเทียบ Win32_OperatingSystem BuildNumber ไม่ทำงานตามที่คาดไว้ใน Windows 10
Windows Management Instrumentation (WMI) คือการนำมาตรฐาน Web-Based Enterprise Management (WBEM) และ Common Information Model (CIM) ของ Microsoft จาก Distributed Management Task Force (DMTF) มาใช้ ซึ่งเป็นชุดข้อกำหนดจาก Microsoft สำหรับการรวมการจัดการอุปกรณ์ และแอปพลิเคชันในเครือข่ายจากระบบคอมพิวเตอร์ Windows
WMI อนุญาตให้ใช้ภาษาสคริปต์ (เช่น VBScript หรือ Windows PowerShell) เพื่อจัดการคอมพิวเตอร์และเซิร์ฟเวอร์ส่วนบุคคลของ Microsoft Windows ทั้งในเครื่องและจากระยะไกล WMI ติดตั้งมาล่วงหน้าใน Windows 2000 และใน Microsoft OS ที่ใหม่กว่า
WMI ยังสนับสนุนการดำเนินการต่างๆ เช่น การกำหนดค่าการตั้งค่าความปลอดภัย การตั้งค่าและการเปลี่ยนแปลงคุณสมบัติของระบบ การตั้งค่าและการเปลี่ยนแปลงการอนุญาตสำหรับผู้ใช้ที่ได้รับอนุญาตและกลุ่มผู้ใช้ การกำหนดและการเปลี่ยนฉลากของไดรฟ์ กำหนดเวลาให้กระบวนการทำงานในเวลาที่กำหนด สำรองข้อมูลที่เก็บอ็อบเจ็กต์ และ เปิดหรือปิดการบันทึกข้อผิดพลาด
ตัวกรอง WMI Group Policy Win32_OperatingSystem BuildNumber ไม่ทำงาน
คุณประสบปัญหานี้โดยอิงจากสถานการณ์ต่อไปนี้
คุณต้องการให้นโยบายกลุ่มนำไปใช้กับ Windows 8.1 และ Windows รุ่นที่ใหม่กว่า คุณต้องการใช้ Win32_OperatingSystem BuildNumber เพื่อทำสิ่งนี้ และคุณสร้างตัวกรอง Windows Management Instrumentation (WMI) ต่อไปนี้:
“Select BuildNumber from Win32_OperatingSystem WHERE BuildNumber >= 9200 “
ตามหมายเลขรุ่นของ Windows ที่ทราบดังแสดงในตารางด้านล่าง:
หมายเลขบิวด์ | เวอร์ชัน Windows |
---|---|
9200 | Windows 8 |
9600 | Windows 8.1 |
10240 | Windows 10 |
10586 | Windows 10 เวอร์ชัน 1511 |
14393 | Windows 10 เวอร์ชัน 1607 |
15063 | Windows 10 เวอร์ชัน 1703 |
16299 | Windows 10 เวอร์ชัน 1709 |
17134 | Windows 10 เวอร์ชัน 1803 |
17763 | Windows 10 เวอร์ชัน 1809 |
18362 | Windows 10 เวอร์ชัน 1903 |
ในสถานการณ์สมมตินี้ แม้ว่าคุณจะคาดหวังว่าตัวกรอง WMI จะทำให้การตั้งค่านโยบายกลุ่มมีผลกับบิลด์หมายเลข 9200 และรุ่นที่ใหม่กว่า แต่ไม่รวมบิลด์ Windows 10
ตามที่ Microsoft ระบุ ปัญหานี้เกิดขึ้นเนื่องจากประเภทข้อมูลสำหรับ BuildNumber เป็นสตริงและไม่ใช่จำนวนเต็ม ดังนั้น 10*** <9600
เมื่อต้องการแก้ไขปัญหานี้ ใช้ตัวกรองที่คล้ายกับตัวอย่างต่อไปนี้:
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]%"
หมายเหตุ: มีหลายวิธีในการบังคับให้สตริงเปรียบเทียบเพื่อส่งคืนผลลัพธ์ที่คุณต้องการ คุณสามารถใช้วิธีการใดก็ได้ที่คุณต้องการ ตัวอย่างใช้งานได้อย่างสมบูรณ์
หวังว่านี่จะช่วยได้!