2010年6月26日土曜日

◆サブフォルダーの容量を求める

PowerShell: ◆スクリプトファイルを作るで決めた形式でサンプルを一つ作ってみた。

フォルダーの容量を求めたいことはよくあるので、指定されたフォルダーにあるサブフォルダーの容量を求める。

param(
    [string]$Path = ".\",
    [switch]${??}
)

$comment = @'
#####################################################

指定されたフォルダーのサブフォルダーのディスク容量を表示する
  (MGet-FolderSizes.ps1)

param(
    [string]$Path = ".\",
    [switch]${??}
)

例:
    #
    MGet-FolderSizes.ps1 -Path "C:\Windows"

#####################################################
'@

Set-PSDebug -Strict

if(${??}) {$comment;return}

Get-ChildItem -Path $Path | ?{$_.PsIsContainer} |
    select name,@{
         name="Size(MB)";expression={
            "{0,10:n2}" -f
            (($_ | Get-ChildItem -Recurse -ea silentlycontinue |
             measure -Sum length).Sum / 1mb)
         }
     } |
    sort “Size(MB)” -des
Set-PSDebug –Off


指定されたパスの子供を取得。
PsIsContainerプロパティでフォルダーだけを抽出。
NameとSizeプロパティをSelect
Sizeプロパティはもともと存在しないので自分で求める。
  配下のファイルをRecurse指定で全てとってくる。(アクセスできないファイルは無視)
  Measure-Objectコマンドレットでlengthプロパティをサマリ。
  余計なプロパティもくっついてくるのでSumプロパティを使用。
  1mbで割ってMB表示に。
  フォーマット演算子でフォーマット設定。
結果をSizeプロパティで降順にソート

0 件のコメント:

コメントを投稿