ผมเจอ error แปลกๆ เมื่อพยายามรัน SysPrep บนระบบที่ติดตั้งแล้ว ซึ่งจะถูกใช้เพื่อสร้าง reference image เพื่อปรับใช้ Windows 10 โดยใช้ System Center Configuration Manager 2012 R2 หลังจากเริ่ม SysPrep ข้อผิดพลาดต่อไปนี้ปรากฏ:
Sysprep was not able to validate your Windows installation, Review the log file at %Windows%\System32\Sysprep\Panther\setupact.log for details. After resolving the issue, use Sysprep to validate your installation again.
มาเปิดไฟล์ log ของ Sysprep setupact.log และวิเคราะห์ข้อผิดพลาด
2016-10-23 13:12:51, Error [0x0f0036] SYSPRP spopk.dll:: Sysprep will not run on an upgraded OS. You can only run Sysprep on a custom (clean) install version of Windows.
ข้อผิดพลาดรายงานอย่างชัดเจนว่า SysPrep ไม่สามารถรันบนระบบที่อัปเกรดจาก Windows เวอร์ชันก่อนหน้าได้ นี่คือกรณีของเรา: ระบบถูกอัปเกรดจาก Windows 7 เป็น Windows 10 ตรงตามบทความใน KB828287 knowledge base: Microsoft does not support the use of Sysprep to create images of an installation that has been upgraded (SP installation is not considered to be an upgrade) SysPrep รองรับเฉพาะ clean installations เท่านั้น คุณต้องติดตั้งระบบใหม่จากศูนย์หรือไม่?
ผมพบวิธีแก้ไขง่ายๆ โดยใช้ Process Monitor ด้วย filter ตาม process sysprep.exe และเปรียบเทียบ clean และ upgraded versions ของ Windows 10 ผมได้รายการ registry keys ที่ SysPrep ตรวจสอบเมื่อเริ่มต้นซึ่งช่วยกำหนดว่าระบบเป็น clean หรือ upgraded นี่คือสิ่งที่คุณต้องทำเพื่อลบเครื่องหมายของระบบที่อัปเกรดสำหรับ Windows 10 ที่ SysPrep ตรวจสอบ (ยังทำงานใน Windows versions อื่นๆ):
สำคัญ วิธีแก้ไขที่อธิบายไว้ไม่ได้รับการสนับสนุนอย่างเป็นทางการโดย Microsoft และไม่รับประกันว่าคุณจะไม่มีปัญหากับ system image ที่คุณได้ด้วยวิธีนี้
- เปิด Registry Editor (regedit.exe)
- ไปที่ HKEY_LOCAL_MACHINE\SYSTEM\Setup\
- ลบคีย์ Upgrade (ถ้ามี) และค่า registry ที่มีชื่อ Upgrade
- ในคีย์ HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus ระบุค่า CleanupState เท่ากับ 7
- รีสตาร์ทคอมพิวเตอร์และลองรัน SysPrep อีกครั้ง
เคล็ดลับ ในกรณีของ Windows 10 เพื่อให้ SysPrep ทำงาน ผมต้องลบ Modern applications ที่ไม่ใช่มาตรฐานแยกต่างหาก (ไม่ใช่ในโหมด provision) ที่ติดตั้งจาก Microsoft Store โดยผู้ใช้ระบบ
คุณสามารถทำได้โดยการลบ user profiles ทั้งหมด (ถ้ามี) uninstall Metro applications ทั้งหมดสำหรับผู้ใช้ทุกคน (ไม่แนะนำ) หรือ uninstall แอปพลิเคชันเหล่านี้ด้วยตนเอง ตัวเลือกสุดท้ายสามารถทำได้ดังนี้:
- ได้รายการ Metro applications ที่ติดตั้งทั้งหมดในทุก user profiles (เราต้องการเฉพาะแพ็กเกจที่มีสถานะ Installed):
Get-AppxPackage -AllUser | Format-List -Property PackageFullName,PackageUserInformation - และ uninstall ทีละตัวดังนี้:
Remove-AppxPackage -Package <packagefullname>หรือแบบนี้:Remove-AppxProvisionedPackage -Online -PackageName <packagefullname>