DISM / RestoreHealthパラメーターとSFCの目的は何ですか?

Aug 19 2020

DISM /RestoreHealthパラメータとパラメータの目的は何SFC /ScanNowですか?

  • それらはどのように相互に関連していますか?
  • それらはどのような順序で実行する必要がありますか?
  • どちらかを実行するときに順序シーケンスが重要なのはなぜですか?

回答

3 JW0914 Aug 19 2020 at 13:28

コンポーネント・ストアは、 [ %WinDir%\WinSxS]、すべてのWindowsシステムファイルのバックアップコピーを維持し、SFCかつDISMで、コンポーネント・ストアやOSの二つの別々の、重要な部分を管理SFC頼る完全にものにDISM管理します。



  • DISM2つの機能がありますSFCに依存している、/StartComponentCleanup/RestoreHealth、との/RestoreHealth時にのみ依存します/StartComponentCleanup
    • /StartComponentCleanup 壊れたハードリンクをコンポーネントストアから削除します。頻繁に更新されるため、InsiderBuildsの担当者はこれを定期的に実行する必要があります。
    • /RestoreHealth ハッシュ比較を通じて、Windows Updateサーバーからの既知の正常なコピーに対してシステムファイルのバックアップを検証することにより、コンポーネントストアの破損を検証および修正します。オフラインメソッドは存在しますが[以下]、常に破損を修正できるとは限りません。

  • SFCコンポーネントストアが破損していないことを常に想定しているため、DISM /RestoreHealthパラメータは常にSFC;の前に実行する必要があります。そうしないと、破損したコンポーネントストアが、正常なシステムファイルを破損したファイルに置き換えたり、破損%WinDir%を完全に修正できなかったりする可能性があります。
    • /ScanNow%WinDir%ハッシュ比較を通じてコン​​ポーネントストア内の既知の正常なコピーと照合することにより、内部の破損を検証および修正します


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
    
    コンポーネントストアは、Windows Updateを実行する前、Windows Updateで問題が発生した後、および少なくとも月に1回は常にクリーンアップする必要があります。これは、更新によってハードリンクが切断されることがあるため、時間の経過とともにダーティになるためです。

  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||を使用します インストール されたバージョン(v1909、v2004など)install.wimWindowsインストールISOから:
      1. Windows10インストールメディアを作成今すぐツールをダウンロード別のPCインストールすることを選択
      2. ISOをマウントし、||からインストールされているOSインデックス[イメージ]を決定します。: install.esdinstall.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は、下から順に確認します)


ランダムな問題の発生を防ぐために、タスクスケジューラを介してこれらを毎週実行します。

  1. Dism_ComponentCleanup.xml
    毎週日曜日の11:30:00に実行されます
  2. Dism_RestoreHealth.xml
    毎週日曜日の12:00:00に実行されます
  3. Sfc_ScanNow.xml
    毎週日曜日の13:00:00に実行されます

タスクスケジューラにインポートするには:

  • 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