OverSizeDirectory.psm1
function Get-OverSizeDirectory { <# .SYNOPSIS フォルダが指定サイズを超えるかどうかを判定します。 .DESCRIPTION 指定フォルダ内にあるフォルダのファイル数・サイズをカウントし、 指定サイズを超えるかどうかを判定した結果と共に返します。 .EXAMPLE PS C:\> Get-Item ./ | Get-DirectorySize -OverSize 1000 .PARAMETER LiteralPath 対象となるフォルダパス .PARAMETER OverSize 比較するサイズ。省略可 #> [CmdletBinding()] param( [parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias("Path")] [ValidateNotNullOrEmpty()] [string]$LiteralPath, [parameter(ValueFromPipelineByPropertyName = $true)] [Alias("Size")] [int]$OverSize = 0 ) process { $directories = Get-ChildItem -LiteralPath $LiteralPath -Force | Where-Object {$_.Attributes.ToString().Contains("Directory")} foreach ($directory in $directories) { $measureResult = Get-ChildItem -LiteralPath $directory -Recurse -Force -File | Measure-Object -Sum Length $output = [PSCustomObject]@{ SizeOver = $measureResult.Sum -ge $OverSize TotalSize = $measureResult.Sum FileCount = $measureResult.Count Path = $directory } Write-Output $output } } } New-Alias -Name gosd -Value Get-OverSizeDirectory Export-ModuleMember -Function * Export-ModuleMember -Alias gosd |