Windows ServerでCleanmgr.exeを使用してディスククリーンアップを実行する方法

ええ、Windows Serverは時々面倒なことがあります。特にディスククリーンアップ(cleanmgr.exe)ツールがデフォルトでインストールされていない場合はなおさらです。複数のサーバーを扱っている場合や、何度もアップデートした後に空き容量を確保したい場合、このユーティリティを異なるバージョンで実行する方法を知っておくと便利です。特に、このツールが見つからない、または機能しない場合はなおさらです。特にWindows Server 2012以降では、このツールが標準でインストールされていないため、手動で有効化したりファイルをコピーしたりする作業が必要になります。少し面倒ですが、一度手順を覚えてしまえば、ディスク領域のクリーンアップはずっと簡単になります。

Windows Serverでディスククリーンアップを有効化または使用する方法

Windows Server 2016 でディスク クリーンアップ ツールを使用する

Windows Server 2016(デスクトップエクスペリエンス搭載)には既に cleanmgr.exe が搭載されているため、これが最も簡単です。ファイルエクスプローラーを開き、システムドライブ(C: など)を右クリックしてプロパティを選択し、ディスククリーンアップをクリックします。または、検索ボックスにdisk cleanupまたはと入力して検索することもできますcleanmgr.exe

開いたら、クリーンアップするドライブを選択し、ウィザードがスキャンを開始するまで待ちます。セットアップログ、ダウンロードファイル、インターネットキャッシュ、ごみ箱、サムネイルなど、削除可能な一時ファイルとシステムコンポーネントのリストが表示されます。Windows Updateの残骸や、時間の経過とともに蓄積された古いDefenderファイルなどを削除するには、「システムファイルのクリーンアップ」をクリックすることをお勧めします。

環境によっては、Windows Update Cleanupなどのオプションを明示的に選択する必要があるかもしれません。これは、アップデート後に残った WinSxS フォルダ内の古いコンポーネントを削除します。削除するものを選択したら、[OK] をクリックして確定します。少し時間がかかりますが、システムドライブの空き容量を確保するのに非常に役立ちます。あるマシンでは一度失敗しましたが、再実行するとすべて正常に削除されました。Windows は、この手順を必要以上に複雑にしてしまうことがよくあります。

cleanmgr.exe のコマンドライン オプション

自動化やスクリプト作成には、コマンドライン版の を使用することをお勧めします。や などcleanmgr.exeのスイッチをサポートしています。これらは、好みのクリーンアップオプションを保存しておき、毎回GUIをクリックすることなく実行できると考えてください。/sageset:n/sagerun:n

たとえば、クリーンアップ プロファイルを設定するには、次のコマンドを実行します。

cleanmgr.exe /sageset:11

ウィザードが開き、クリーンアップする対象を選択できます。選択した内容は、レジストリのHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCachesのStateFlags0011などのキーに保存されます。その後、次のコマンドを実行します。

cleanmgr.exe /sagerun:11

事前に設定した内容を正確にクリーンアップします。スケジュールされたタスクやリモートスクリプトに最適です。さらに高度な処理が必要な場合は、PowerShell のスケジュールタスクを使って自動化することもできます。

Start-Process -FilePath CleanMgr.exe -ArgumentList '/sagerun:11' -WindowStyle Hidden -Wait

複数のサーバーを同時に管理している場合に非常に便利です。ただし、一部のマシンではレジストリ設定が必ずしも保持されない場合があるので、スクリプトをスケジュールする前に、設定オプションが正しいことを再確認してください。

古いバージョンの Windows Server (2012 R2、2008 R2) でディスク クリーンアップを実行する

後のバージョンとは異なり、 Windows Server 2012 R2または2008 R2ではcleanmgr.exeがデフォルトで存在しません。この問題を解決するには、デスクトップエクスペリエンス機能をインストールするか、別のマシンからファイルを手動でコピーするという2つの方法があります。

PowerShell 経由でデスクトップ エクスペリエンスをインストールするのは簡単です。

Install-WindowsFeature Desktop-Experience

これにより不足しているアプリが追加されますが、不要なコンポーネントも多数追加される可能性があります。サーバーを軽量化したい場合は、別のWindows Server(2016や2012など)からcleanmgr.exeと言語リソースファイルをC:\Windows\System32にコピーするという回避策があります。これは以下のコマンドで実行できます。

copy C:\Windows\winsxs\amd64_microsoft-windows-cleanmgr_..._6.2.9200..._c60dddc5e750072a\cleanmgr.exe C:\Windows\System32\

ただし、2012 R2では、一部のアップデート(KB2821895など)の影響により、これらのファイルを直接コピーすると16ビットアプリのサポートでエラーが発生する可能性があります。よくあるエラーは?「サポートされていない16ビットアプリケーション」です。これは、Windowsが圧縮または変更されたレガシーコンポーネントを実行しようとしているだけです。

このような場合は、デスクトップエクスペリエンスをインストールするか、別のクリーンアップスクリプトを使用する方が安全です。また、古いサーバーでは、更新プログラムの残りを手動で削除したり、dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBaseコンポーネントストアをクリーンアップしたりする必要があることがよくあります。

Windows Server Core でディスク クリーンアップを使用する

Server CoreにはGUIやエクスプローラーがないため、クリックして操作することはできません。代わりに、フルインストール版(GitHub: Winhanceなど)からcleanmgr.exeとそのリソースファイルをC:\Windows\System32にコピーしてください。コピーしたら、管理者権限でコマンドラインから直接実行すると、GUI版と同様のクリーンアップウィザードが起動します。

ほぼこれで完了です。重要なのは、サーバーにユーティリティがインストールされているかどうかを確認すること、そしてインストールされていない場合は手動でコピーまたはインストールすることです。Windowsではこれらのツールが分かりにくい傾向がありますが、少し手を加えるだけで復元できます。特にディスク容量やクリーンアップが重要な場合は有効です。

まとめ

  • デスクトップ エクスペリエンスを備えた Windows Server 2016 以降では、右クリックまたは検索でディスク クリーンアップを実行するだけです。
  • cleanmgr.exe自動化のためにコマンドライン オプションを使用します。
  • 古いバージョンの場合は、デスクトップ エクスペリエンスをインストールするか、ファイルを手動でコピーします。2012 R2 ではエラーが発生する可能性があることに注意してください。
  • Server Core で、実行可能ファイルをコピーし、コマンド プロンプトから直接実行します。

まとめ

Windows Serverでディスククリーンアップを動作させるのは必ずしも簡単ではありませんが、不可能というわけではありません。ファイルのコピー方法や機能のインストール方法とタイミングを知っておくことは大きな違いを生みます。一度設定すれば、特にパッチ適用サイクルを複数回行った後など、ディスク容量を解放するのに非常に時間を節約できます。まずは1台のサーバーで少し試してみて、スクリプトやGPOを使って他のサーバーに展開してみましょう。ただし、Windows Serverはこれらのツールに関して少し癖があるかもしれませんが、根気強く取り組めば必ず成果が上がります。

うまくいけば、これによって誰かの時間が数時間短縮されるか、少なくとも将来の頭痛の種が軽減されるでしょう。