|
#*****************************************************************************************
#使用示例:
#示例:GetFoldersize.ps1 -FolderPath "D:\Exchange Server" -sort Layer -Class 3 -Size 0.5
#获取"D:\Exchange Server"目录下的3层以内的大于0.5GB的子文件夹,并按照子文件夹所在的层级进行
#排序;
#示例:GetFoldersize.ps1 -FolderPath "D:\Exchange Server" -sort SizeGB
#获取"D:\Exchange Server"目录下的所有子文件夹并按照大小进行排序
#使用管理员运行脚本可解决GUI操作界面的文件夹权限问题。
#*****************************************************************************************
#参数说明:
#-FolderPath 需要提取信息的文件夹,必需参数;
#-Sort 显示结果的排序属性,支持Layer,FullName,Size,非必需参数,默认情况下按照子文件夹所属
#层级进行排序;
#-Class 显示子文件夹的最大层级数,非必需参数,默认情况下显示的最大层级为100;
#-Size 筛选超过一定大小的文件夹,以GB为单位,非必需参数,默认情况下显示所有文件夹;
#*****************************************************************************************
#帮助信息:
#Edit By Simy_88 @2015/07/26
#QQ:2022215673
#Mail:simy_88@163.com
#*****************************************************************************************
#*****************************************************************************************
#使用示例:
#示例:GetFoldersize.ps1 -FolderPath "D:\Exchange Server" -sort Layer -Class 3 -SizeGB 0.5
#获取"D:\Exchange Server"目录下的3层以内的大于0.5GB的子文件夹,并按照子文件夹所在的层级进行
#排序;
#示例:GetFoldersize.ps1 -FolderPath "D:\Exchange Server" -sort SizeGB
#获取"D:\Exchange Server"目录下的所有子文件夹并按照大小进行排序
#*****************************************************************************************
#参数说明:
#-FolderPath 需要提取信息的文件夹,必需参数;
#-Sort 显示结果的排序属性,支持Layer,FullName,Size,非必需参数,默认情况下按照子文件夹所属
#层级进行排序;
#-Class 显示子文件夹的最大层级数,非必需参数,默认情况下显示的最大层级为100;
#-SizeGB 筛选超过一定大小的文件夹,非必需参数,默认情况下显示所有文件夹;
#*****************************************************************************************
#帮助信息:
#Edit By Simy_88 @2015/07/26
#QQ:2022215673
#Mail:simy_88@163.com
#*****************************************************************************************
#参数定义
Param (
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]$FolderPath,
[ValidatePattern("Layer|FullName|Size")]
[string]$sort = "Layer",
[int]$Class = 100,
[double]$Size = 0
)
$InitialLayer = $FolderPath.Split("\").count
$ChildFolder = Get-ChildItem -Path $FolderPath -recurse | where {$_.PSIsContainer -eq $true}
$output = @()
Foreach ($Folder in $ChildFolder)
{
$TempObj = New-Object psobject
$ChildFolderPath = $Folder.fullname
$Layer = $ChildFolderPath.Split("\").count - $InitialLayer
$ChildFiles = Get-ChildItem -Path $ChildFolderPath -Recurse | where {$_.PSIsContainer -eq $false}
If ($ChildFiles -ne $null)
{
$SizeByte = ($ChildFiles | Measure-Object -Property length -Sum).sum
$SizeGB = "{0:N2}" -f ($SizeByte/1GB)
} else
{
$SizeGB = 0
}
$TempObj | Add-member -Type NoteProperty -name "Layer" -value $Layer
$TempObj | Add-member -Type NoteProperty -name "Name" -value $Folder.name
$TempObj | Add-member -Type NoteProperty -name "FullName" -value $ChildFolderPath
$TempObj | Add-member -Type NoteProperty -name "Size" -value $SizeGB
$Output += $TempObj
}
$output | where {($_.size -gt $size) -and ($_.layer -le $class)} | sort-object $sort
|
|