Powershell 2.0版本下的脚本:

<#
Script Function: get size of folder
Script Editor: Snail Yu
#>
$directories=Get-ChildItem c:\windows |where {$_.mode -like "d*"}
foreach ($directory in $directories){
    $files=(Get-ChildItem $directory.fullname -Recurse -ErrorAction SilentlyContinue|where {$_.mode -like "-a*"})
    foreach ($file in $files){
        $size=$size+$file.length
    }
     write-host "the size of $directory is : $size"
}

 

PowerShell 4.0版本下的脚本:

<#
Script Function: get size of folder
Script Editor: Snail Yu
#>
$directories=Get-ChildItem d:\ -Directory
foreach ($directory in $directories){       
$files=Get-ChildItem $directory.FullName -Recurse –File -ErrorAction SilentlyContinue   
foreach ($file in $files){            
   $size=$size+$file.Length       
   }        
   write-host "the size of $directory is : $size"     
}

 

参数说明:

(1)powershell 2.0中的get-childitem 没有file和directory的参数,只有通过管道来筛选;

(2)-erratction为错误处理机制,详见博客:http://281816327.blog.51cto.com/907015/1417587

(3)powershell得到的是文件夹名不包括绝对路径,需要用fullname属性显示指定;