PowerShellでディスクの断片化状態を確認する方法で重要なのは、実行例を増やすことより、対象と戻し方を先に確定することです。結論は「Get-VolumeにFragmentationPercentage propertyはありません。Optimize-Volume -DriveLetter C -Analyze -Verboseで分析し、media typeとWindowsの自動最適化policyを確認してから必要性を判断します。」。ここではdrive letterだけでなくmedia type、filesystem、Storage Spaces/virtual diskを確認し、SSDへHDDと同じ判断をしない条件を前提に、2026年7月17日時点の公式仕様から、現場で再現できる判断順を組み立てます。
volumeとphysical mediaの対応を確認する
Optimize-Volume -Analyzeの入力、出力、変更有無を一文で書き、host、user、current directory、実行時刻を添えます。analysis結果は同じOS版とmedia種別で比較し、HDDとSSDの判断基準を混ぜません。
- Get-Volumeでfilesystem、health、size、free spaceを確認する
- Get-PhysicalDiskでMediaTypeとbusを確認する
- Get-ScheduledTaskのDefrag taskと最終実行を確認する
- backup、maintenance、BitLocker、storage構成を確認する
HDD・SSD・virtual diskを区別する
volume概要
Get-Volume | Select-Object DriveLetter,FileSystemLabel,FileSystem,HealthStatus,Size,SizeRemaining,DriveType
FragmentationPercentageはこのobjectの標準propertyではありません。
media typeを確認
Get-PhysicalDisk | Select-Object FriendlyName,SerialNumber,MediaType,BusType,HealthStatus,Size
volumeとのmappingが単純でないStorage Spaces等を考慮します。
C volumeを分析
Optimize-Volume -DriveLetter C -Analyze -Verbose
-Analyzeは分析です。管理者権限、filesystem対応、現在の負荷を確認します。
defrag scheduled taskを読む
Get-ScheduledTask -TaskPath '\Microsoft\Windows\Defrag\' | Get-ScheduledTaskInfo
taskを無効化・変更せず状態だけを読みます。
volume healthも確認
Get-Volume -DriveLetter C | Select-Object DriveLetter,HealthStatus,OperationalStatus,Size,SizeRemaining
断片化と容量不足、disk healthを混同しません。
Optimize-Volume -Analyzeだけを実行する
Optimize-Volumeはmediaに応じてdefrag、retrim等の適切なoperationを選びます。SSDでもWindowsの最適化taskが必要な場合があり、「SSDは何もしない」と決めつけません。分析結果の文言やpercentはfilesystemとversionに依存します。performance問題はfragmentationだけでなくfree space、storage latency、healthも確認します。
Defrag scheduled taskの履歴を読む
-Analyzeは読み取り中心ですが、-Defrag、-ReTrim、-SlabConsolidate等はstorage I/Oを伴います。業務時間中に一括実行せず、backup、health、free space、maintenanceを確認します。途中で強制電源断しません。問題時は追加最適化を重ねず、eventとstorage healthを調査します。Get-Volumeの存在しないpropertyを空値の正常結果として保存しません。
volume healthと空き容量を補足する
- Get-Volume.FragmentationPercentageを使う
- SSDとHDDを同じ処理にする
- 分析なしでdefragする
- automatic maintenanceを無効化する
- storage health問題を断片化とする
Defrag・ReTrim実行を分析から切り離す
Optimize-Volume -Analyze -Verbose結果、Defrag task履歴、Get-Volume health、Performance Monitor latencyを照合します。最適化した場合は前後分析とevent、業務latencyを比較し、対象volumeとoperationを記録します。
Windows volumeのfragmentation分析を定期化するなら、正常件数、警告境界、停止条件を数値化します。
media type・analysis・task結果を検収する
Get-VolumeとGet-PhysicalDiskでvolume、filesystem、media type、healthを対応付け、Optimize-Volume -Analyze -Verboseは分析だけに限定します。SSDではtrim/retrim、HDDではfragmentationという違いがあり、分析結果から即defragを自動実行しません。
C volumeのanalyze出力を保存する
$v=Get-Volume -DriveLetter C -ErrorAction Stop
$r=Optimize-Volume -DriveLetter C -Analyze -Verbose -ErrorAction Stop 4>&1
[pscustomobject]@{Drive=$v.DriveLetter;FileSystem=$v.FileSystem;Health=$v.HealthStatus;Analysis=($r -join [Environment]::NewLine)}
media非対応をstorage errorと混同しない
- analysis取得:対象driveが一意でhealth正常、media/file systemを確認後にAnalyzeが完了する
- media非対応:unsupported/virtual/removable volumeはNotApplicableとして0% fragmentationへ置換しない
- volume・task error:access denied、dirty volume、offline、analysis errorはmaintenance reviewへ送る
PhysicalDiskとdrive letterが単純一対一でないStorage Spaces/RAIDを考慮します。SSDへHDD同様の頻繁なdefragを強制せず、scheduled taskのLastTaskResultとOS自動最適化も確認します。
driveなし・SSD・virtual diskを試す
Get-PhysicalDisk | Select-Object FriendlyName,UniqueId,MediaType,BusType,HealthStatus,OperationalStatus
Get-ScheduledTask -TaskPath '\Microsoft\Windows\Defrag\' | Get-ScheduledTaskInfo | Select-Object LastRunTime,LastTaskResult,NextRunTime
HDD/SSD/virtual/removable、unsupported filesystem、non-admin、dirty volumeをtestします。volume ID、media type、Analyze output、task result、healthを保存します。
Analyzeの結果を見ずにOptimizeやDefragへ進みません。media type、volume health、scheduled taskの最終結果を合わせ、SSDへHDDと同じ断片化判断を当てないようにします。

コメント