$results = Get-Counter "\PhysicalDisk(インスタンス名)\*" -SampleInterval 1 -MaxSamples 60 #インスタンス名は  (Get-Counter -ListSet PhysicalDisk).PathsWithInstances を実行して確認してください。例、 "\PhysicalDisk(1 d:)\*" $csamples = $results.CounterSamples $grouped = $csamples | Group-Object Path $avg = @{} foreach ($g in $grouped) { $avg[$g.Name] = ($g.Group.CookedValue | Measure-Object -Average).Average } foreach ($k in $avg.Keys) { switch ($k) { {$_ -match "% Idle Time"} {$diskidle = $avg[$k]} {$_ -match "Avg. Disk Queue Length"} {$adiskq = $avg[$k]} {$_ -match "Avg. Disk sec/Read"} {$adiskspr = $avg[$k]} {$_ -match "Avg. Disk sec/Write"} {$adiskspw = $avg[$k]} {$_ -match "Read Bytes/sec"} {$rbps = $avg[$k]} {$_ -match "Write Bytes/sec"} {$wbps = $avg[$k]} {$_ -match "Disk Reads/sec"} {$drps = $avg[$k]} {$_ -match "Disk Writes/sec"} {$dwps = $avg[$k]} } } $outstr = "% Disk Time : {0:N2} %" -f (100 - $diskidle) $outstr += "`nAvg. Disk Queue Length : {0:N2}" -f $adiskq $outstr += "`nAvg. Disk sec/Read : {0:N2} ms" -f ($adiskspr * 1000) $outstr += "`nAvg. Disk sec/Write : {0:N2} ms" -f ($adiskspw * 1000) $outstr += "`nThroughput : {0:N2} MiB/s" -f (($rbps + $wbps) / 1024 / 1024) $outstr += "`nIOPS : {0:N2}" -f ($drps + $dwps) $outstr