วัตถุประสงค์ของพารามิเตอร์ DISM / RestoreHealth และ SFC คืออะไร?

Aug 19 2020

วัตถุประสงค์ของDISM /RestoreHealthพารามิเตอร์และSFC /ScanNowพารามิเตอร์คืออะไร?

  • มีความสัมพันธ์กันอย่างไร?
  • ควรเรียกใช้ในลำดับใด
  • เหตุใดลำดับการสั่งซื้อจึงมีความสำคัญเมื่อดำเนินการอย่างใดอย่างหนึ่ง

คำตอบ

3 JW0914 Aug 19 2020 at 13:28

ตัวแทนร้านค้า [ %WinDir%\WinSxS] รักษาสำเนาสำรองของไฟล์ระบบของ Windows ทั้งหมดและSFCและDISMจัดการสองแยกชิ้นส่วนสำคัญของร้านค้าตัวแทนและระบบปฏิบัติการที่มีการSFCอาศัยอย่างสิ้นเชิงกับสิ่งที่DISMจัดการ



  • DISMมีสองฟังก์ชั่นที่SFCอาศัย/StartComponentCleanupและ/RestoreHealthด้วยการ/RestoreHealthพึ่งพาเพียงอย่างเดียว/StartComponentCleanup
    • /StartComponentCleanup: ทำความสะอาด Component Store ของฮาร์ดลิงก์ที่ เสียหาย
      ผู้ที่จำเป็นใน Insider Builds จะเรียกใช้สิ่งนี้เป็นประจำเนื่องจากมีการอัปเดตบ่อยครั้ง
    • /RestoreHealth: ตรวจสอบและแก้ไขความเสียหายในที่เก็บคอมโพเนนต์โดยการตรวจสอบว่าเป็นการสำรองข้อมูลไฟล์ระบบกับสำเนาที่ดีที่ทราบจากเซิร์ฟเวอร์ Windows Update ผ่านการเปรียบเทียบแฮช ในขณะที่มีวิธีออฟไลน์อยู่ [ด้านล่าง] แต่ก็อาจไม่สามารถแก้ไขความเสียหายได้เสมอไป

  • SFCเสมอถือว่าร้านค้าตัวแทนไม่เสียหายและเป็นเหตุผลที่DISM /RestoreHealthพารามิเตอร์ควรจะทำงานก่อนที่จะSFC; การไม่ทำเช่นนั้นช่วยให้ที่เก็บคอมโพเนนต์ที่เสียหายอาจแทนที่ไฟล์ระบบที่ดีด้วยไฟล์ที่เสียหายหรือล้มเหลวในการแก้ไขความเสียหายภายใน%WinDir%ทั้งหมด
    • /ScanNow:ตรวจสอบและแก้ไขความเสียหายภายใน%WinDir%โดยการตรวจสอบกับสำเนาที่ดีที่รู้จักภายใน Component Store ผ่านการเปรียบเทียบแฮช


DISMและSFCต้องดำเนินการตามลำดับที่ระบุไว้เนื่องจากแต่ละรายการขึ้นอยู่กับสิ่งที่ก่อนหน้านี้ทำ:

  1. # Online (while booted to Windows):
      Dism /Online /Cleanup-Image /StartComponentCleanup
    
    # Offline (while booted to WinPE/WinRE):
      Dism /Image:"D:\Windows" /Cleanup-Image /StartComponentCleanup
      # C: is usually not the drive letter in WinPE/WinRE
      # To ascertain: DiskPart -> Lis Vol -> Exit
    
    ควรทำความสะอาด Component Store เสมอก่อนเรียกใช้ Windows Update หลังจากเกิดปัญหากับ Windows Update และอย่างน้อยเดือนละครั้งเนื่องจากการอัปเดตจะสกปรกเมื่อเวลาผ่านไปจากการอัปเดตบางครั้งอาจทำให้ฮาร์ดลิงก์เสียหาย

  2. # Online (while booted to Windows):
      Dism /Online /Cleanup-Image /RestoreHealth
    
    # Offline (while booted to WinPE/WinRE):
      Dism /Image:"D:\Windows" /Cleanup-Image /RestoreHealth
    
    ต้องใช้การเชื่อมต่ออินเทอร์เน็ตมิฉะนั้นจะต้องใช้วิธีการออฟไลน์:
    • ใช้install.esd|| install.wimจากWindows Install ISO สำหรับเวอร์ชันที่ติดตั้ง(v1909, v2004 ฯลฯ ) :
      1. สร้างสื่อการติดตั้ง Windows 10ดาวน์โหลดเครื่องมือเดี๋ยวนี้ →เลือกติดตั้งบนพีซีเครื่องอื่น
      2. ติดตั้ง ISO และกำหนดดัชนี OS [ภาพ] ที่ติดตั้งจากinstall.esd|| install.wim:
        Dism /Get-ImageInfo /ImageFile:"Z:\sources\install.esd"
        
      3. ระบุหมายเลขดัชนีที่ส่วนท้ายของ/Sourceพารามิเตอร์:
        # Online (while booted to Windows):
          # ESD:
            Dism /Online /Cleanup-Image /RestoreHealth /Source:esd:"Z:\sources\install.esd":6 /LimitAccess
        
          # WIM:
            Dism /Online /Cleanup-Image /RestoreHealth /Source:wim:"Z:\sources\install.wim":6 /LimitAccess
        
        # Offline (while booted to WinPE/WinRE):
          Dism /Image:"D:\Windows" /Cleanup-Image /RestoreHealth /Source:esd:"Z:\sources\install.esd":6 /LimitAccess
        

  3. รีบูต(หากพบข้อผิดพลาดให้ตรวจสอบ%WinDir%\Logs\DISM\dism.logโดยเริ่มจากด้านล่างขึ้นบน)
  4. # Online (while booted to Windows):
      Sfc /ScanNow
    
    # Offline (while booted to WinPE/WinRE):
      Sfc /ScanNow /OffBootDir=D:\ /OffWinDir=D:\Windows
    
  5. รีบูต(หากพบข้อผิดพลาดให้ตรวจสอบ%WinDir%\Logs\CBS\CBS.logโดยเริ่มจากด้านล่างขึ้นบน)


ฉันเรียกใช้รายสัปดาห์เหล่านี้ผ่านTask Schedulerเพื่อช่วยป้องกันไม่ให้เกิดปัญหาแบบสุ่ม:

  1. Dism_ComponentCleanup.xml
    ดำเนินการทุกสัปดาห์ในวันอาทิตย์เวลา 11:30:00 น
  2. Dism_RestoreHealth.xml
    ดำเนินการทุกสัปดาห์ในวันอาทิตย์เวลา 12:00:00 น
  3. Sfc_ScanNow.xml
    ดำเนินการทุกสัปดาห์ในวันอาทิตย์เวลา 13:00:00 น

ในการนำเข้าสู่ Task Scheduler:

  • GUI:
    1. +R
      →เปิด:TaskSchd.msc
    2. การดำเนินการโฟลเดอร์ใหม่ ... →ชื่อ:Custom
    3. การดำเนินการนำเข้างาน ...<task_name>.xml

  • CLI:
    • Cmd:
      SchTasks /Create /Xml "%UserProfile%\Downloads\<task_name>.xml" /Tn "\Custom\Task Name" /Ru "%ComputerName%\%UserName%"
      
    • Powershell:
      Register-ScheduledTask -Xml (Get-Content '$env:UserProfile\Downloads\<task_name>.xml' | Out-String) -TaskName "Task Name" -TaskPath "\Custom\" -User $env:ComputerName\$env:UserName –Force