Chapters/just-enough-administration-primer/ShareAdmin/ShareAdmin.psm1

Function Get-ShareSize {
[cmdletbinding()]
Param(
[Parameter(
    Position = 0,
    Mandatory,
    ValueFromPipelineByPropertyName
    )]
[string]$Path
)

Begin {
  Write-Verbose "[BEGIN ] Starting: $($MyInvocation.Mycommand)"
} #begin

Process {
  Write-Verbose "[PROCESS] Getting share size for $path"

  #use full cmdlet names to avoid problems
  #these commands do not need to be specified in the psrc file
  $stats = Microsoft.PowerShell.Management\Get-Childitem -Path $Path -Recurse `
  -file | Microsoft.PowerShell.Utility\Measure-Object -Property Length -sum

  Microsoft.PowerShell.Utility\New-Object -TypeName PSObject -Property @{
    Path = $path
    FileCount = $stats.count
    FileSize = $stats.sum
  }
}

End {
  Write-Verbose "[END ] Ending: $($MyInvocation.Mycommand)"
} #end

}