日程Fit|「いつ空いてますか?」の往復はもう不要。候補日を選んでURLを送るだけ|登録不要|今すぐ無料で使う →

PowerShellを使ってハードディスクのフラグメンテーション状態を確認する方法

PowerShellを使ってハードディスクのフラグメンテーション状態を確認する方法という問いには、対象ボリュームと媒体種別を確定し、Analyzeだけを実行してVerbose結果とイベントを読むという方法で答えます。Optimize-Volume -Analyzeは状態分析で、媒体に応じた最適化処理そのものとは分けられる。SSDの最適化を単純なデフラグ禁止と表現するのも正確ではない。この記事ではDriveLetter、FileSystem、HealthStatus、PhysicalDiskのMediaTypeを同じボリュームへ対応させるを判断軸にし、実行前の確認、記事固有のコード、合否判定、戻し方を一続きで示します。

空き容量や物理障害診断ではなく、Windows最適化機能の分析結果を読む。完了は「分析対象、媒体種別、健康状態、推奨アクションが記録され、実行要否を保守担当が判断できる」と定義します。対象が取れない場合は「ドライブ文字がない、対応外ファイルシステム、記憶域ジョブ中の場合は分析対象外として理由を残す」として切り分け、推測で成功扱いにしません。

日程Fit。無料・登録不要。「いつ空いてる?」を、ひとつのリンクで。リンクを送って、○△×でかんたん日程調整。無料で日程を作る。
目次

媒体種別を確認してから考える

媒体種別を確認してから考えるでは、ディスク断片化の分析の対象を「DriveLetter、FileSystem、HealthStatus、PhysicalDiskのMediaTypeを同じボリュームへ対応させる」という単位で扱います。Optimize-Volume -Analyzeは状態分析で、媒体に応じた最適化処理そのものとは分けられる。SSDの最適化を単純なデフラグ禁止と表現するのも正確ではない。対象が複数なら表示名の部分一致で先頭を採らず、一意になる条件を追加します。

ディスク断片化の分析を始める前に、PowerShellの版、コマンドの提供元、必要権限、管理ポリシーの有無を確認します。権限不足と対象なしは意味が異なるため、例外を0件へ置き換えません。

Volumeの健康状態と空き容量を読む

Volumeの健康状態と空き容量を読むは変更前の基準点です。DriveLetter、FileSystem、HealthStatus、PhysicalDiskのMediaTypeを同じボリュームへ対応させるを出力に含め、取得時刻と一緒に保存します。値だけを切り取ると別対象との比較になるため、識別列を省きません。

Get-Volume | Select-Object DriveLetter, FileSystem, HealthStatus, SizeRemaining, Size
Optimize-Volume -DriveLetter C -Analyze -Verbose

Optimize-Volume -Analyzeは状態分析で、媒体に応じた最適化処理そのものとは分けられる。SSDの最適化を単純なデフラグ禁止と表現するのも正確ではない。出力が多い場合も最初から無理に一件へ絞らず、候補数と除外理由を残してから対象を決めます。

Analyzeだけを先に実行

対象ボリュームと媒体種別を確定し、Analyzeだけを実行してVerbose結果とイベントを読む。ディスク断片化の分析ではこの進め方により、操作したという事実ではなく、期待する状態へ到達したかでタイトルの問いへ答えられます。空き容量や物理障害診断ではなく、Windows最適化機能の分析結果を読む。

Analyzeだけを先に実行の合格条件は、分析対象、媒体種別、健康状態、推奨アクションが記録され、実行要否を保守担当が判断できることです。作業時刻、実行ユーザー、端末名を添え、判断に使った値が後から追える形にします。

SSDへHDDの判断を当てはめない

SSDへHDDの判断を当てはめないでは、対象ボリュームと媒体種別を確定し、Analyzeだけを実行してVerbose結果とイベントを読む。ディスク断片化の分析の例中にある名前、パス、ID、時刻はサンプルなので、そのまま本番へ貼らず、直前の読み取り結果から承認値を入れます。

# Analyzeは状態確認。最適化を実行する前に媒体種別と業務時間を確認する。
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, HealthStatus

分析結果を見ずに全ボリュームへ最適化を流さない。業務I/Oが高い時間帯も避ける。ディスク断片化の分析でプレビュー対応コマンドを使える場合はWhatIfを先に実行し、非対応の操作は対象一覧と引数を画面へ出して人が承認してから一度だけ実行します。

最適化サービスの結果を確認

最適化サービスの結果を確認では同じ対象を別経路でもう一度読みます。判定したいのは「コマンドが終了したか」ではなく、分析対象、媒体種別、健康状態、推奨アクションが記録され、実行要否を保守担当が判断できるかどうかです。

Optimize-Volume -DriveLetter C -Analyze -Verbose
Get-WinEvent -FilterHashtable @{ LogName='Application'; ProviderName='Microsoft-Windows-Defrag' } -MaxEvents 10

ドライブ文字がない、対応外ファイルシステム、記憶域ジョブ中の場合は分析対象外として理由を残す。ディスク断片化の分析の期待値と実測値が一致しないときは追加変更を重ねず、対象識別、権限、ポリシー、時間差の順で原因を分けます。

分析不能や修復中なら中止

分析結果を見ずに全ボリュームへ最適化を流さない。業務I/Oが高い時間帯も避ける。分析不能や修復中なら中止に該当したら、警告を消して継続するのではなく、どの条件で止まったかを記録します。

ドライブ文字がない、対応外ファイルシステム、記憶域ジョブ中の場合は分析対象外として理由を残す。ディスク断片化の分析ではエラー本文、FullyQualifiedErrorId、対象ID、直前に成功した段階を残すと、別担当者が安全な地点から調査できます。

実行作業は保守時間へ分離

定期評価では同じVolume UniqueIdと媒体種別を保存し、ドライブ文字だけで前回値へ結び付けない。ディスク断片化の分析を繰り返す場合は、正常、対象なし、要承認、失敗を異なる終了状態として記録し、前回値との比較だけで異常を決めません。

実行作業は保守時間へ分離の識別軸DriveLetter、FileSystem、HealthStatus、PhysicalDiskのMediaTypeを同じボリュームへ対応させる
採用する実測分析対象、媒体種別、健康状態、推奨アクションが記録され、実行要否を保守担当が判断できる
0件時の扱いドライブ文字がない、対応外ファイルシステム、記憶域ジョブ中の場合は分析対象外として理由を残す
保留にする兆候分析結果を見ずに全ボリュームへ最適化を流さない。業務I/Oが高い時間帯も避ける

ディスク断片化の分析の実行記録には、開始前の対象候補、採用した識別値、実行したコード、終了後の実測、除外した候補と理由を同じ作業番号で残します。特に「DriveLetter、FileSystem、HealthStatus、PhysicalDiskのMediaTypeを同じボリュームへ対応させる」を省くと、後日の再確認で別対象の値を比較するおそれがあります。画面コピーだけでなく、日時と端末名を含む構造化した出力も保存します。

PowerShellを使ってハードディスクのフラグメンテーション状態を確認する方法を定期手順へ組み込む場合も、初回は対話的に候補を確認します。正常時は「分析対象、媒体種別、健康状態、推奨アクションが記録され、実行要否を保守担当が判断できる」、判定不能時は「ドライブ文字がない、対応外ファイルシステム、記憶域ジョブ中の場合は分析対象外として理由を残す」、中止時は「分析結果を見ずに全ボリュームへ最適化を流さない。業務I/Oが高い時間帯も避ける」をそれぞれ別の結果として扱います。これにより、0件や例外を都合よく成功へ丸めず、次の担当者が同じ対象と条件で追試できます。

公式情報・参考資料

ディスク断片化の分析で使うコマンド名、引数、対応環境は次のMicrosoft一次資料で確認しました。記事の確認日は2026年7月17日です。OSやモジュール更新後は、実行端末のGet-Helpと併せて再確認してください。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次