できたできた
今日はもう寝るので忘れないようにメモ - 気楽に諸々 が出来た><
dir 'C:\Program Files\' | % { $_ | Add-Member 'NoteProperty' 'TotalSize (MB)' $( $_ | dir -Recurse -Force | ? { !$_.PSIsContainer } | Measure-Object 'Length' -Sum | % { [int]($_.Sum / 1MB) } ) -PassThru } | sort 'TotalSize (MB)' -Descending | select 'Name', 'TotalSize (MB)' -First 5 | Format-Table -AutoSize
改行入れるとこんな感じ
dir 'C:\Program Files\' | % { $_ | Add-Member 'NoteProperty' 'TotalSize (MB)' $( $_ | dir -Recurse -Force | ? { !$_.PSIsContainer } | Measure-Object 'Length' -Sum | % { [int]($_.Sum / 1MB) } ) -PassThru } | sort 'TotalSize (MB)' -Descending | select 'Name', 'TotalSize (MB)' -First 5 | Format-Table -AutoSize
実行結果はこんな感じ
Name TotalSize (MB) ---- -------------- Microsoft Visual Studio 9.0 2511 MSDN 2433 Microsoft SDKs 1303 Microsoft Office 752 Common Files 522
# 追記
単位の変換を Format-Table でやるという手もあった!
dir 'C:\Program Files\' | % { $_ | Add-Member 'NoteProperty' 'TotalLength' $( $_ | dir -Recurse -Force | ? { !$_.PSIsContainer } | Measure-Object 'Length' -Sum | % { $_.Sum } ) -PassThru } | sort 'TotalLength' -Descending | select -First 5 | Format-Table 'Name', @{ 'Label' = 'TotalSize (MB)'; 'Expression' = { [int]($_.TotalLength / 1MB) }; } -AutoSize