ps/Modules/Alkami.PowerShell.Common/Public/Get-FolderSizeMb.ps1

59 lines
1.4 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
function Get-FolderSizeMb {
<#
.SYNOPSIS
Retrieves the size in MB of the specified folder.
.PARAMETER Path
The path to evaluate.
.PARAMETER ComputerName
The name of the server where the operation should be performed. If omitted, defaults to the current host.
.OUTPUTS
The size of the specified folder in MB.
.EXAMPLE
Get-FolderSizeMb -Path 'C:\Temp'
129.49
.EXAMPLE
Get-FolderSizeMb -Path 'C:\This\Path\Does\Not\Exist'
0
#>
[CmdLetBinding()]
[OutputType([decimal])]
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string] $Path,
[Parameter(Mandatory = $false)]
[string] $ComputerName = $null
)
$scriptBlock = {
param($p)
if ( Test-Path $p -PathType Container ) {
return [System.Math]::Round( ((Get-ChildItem -Path $p -Recurse -ErrorAction SilentlyContinue -Force) | Measure-Object -Property Length -Sum).Sum / 1Mb, 2)
} else {
return 0
}
}
# Determine if we are executing remotely.
$splatParams = @{}
if ( -not (Test-StringIsNullOrWhitespace -Value $ComputerName) -and -not (Compare-StringToLocalMachineIdentifiers -stringToCheck $ComputerName )) {
$splatParams['ComputerName'] = "$ComputerName"
}
$result = Invoke-Command -ScriptBlock $scriptBlock -ArgumentList $Path @splatParams
return $result
}