Private/Get-TechCareFreeSpace.ps1

function Get-TechCareFreeSpace {
    <#
    .SYNOPSIS
        Devuelve los bytes libres de una unidad.
    .DESCRIPTION
        Se mide antes y despues de la limpieza para informar el espacio realmente
        recuperado, en vez del tamano de lo que se intento borrar.
    #>

    [CmdletBinding()]
    [OutputType([int64])]
    param(
        [ValidateNotNullOrEmpty()]
        [string]$Drive = $env:SystemDrive
    )

    if (-not (Test-TechCarePlatform)) { return [int64]0 }
    try {
        $disk = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DeviceID='$Drive'" -ErrorAction Stop
        if ($null -ne $disk) { return [int64]$disk.FreeSpace }
    } catch {
        # Un fallo al medir no debe impedir la limpieza; se devuelve 0 y el modulo
        # informa solo lo que borro, sin variacion de espacio libre.
        Write-Verbose ('No se pudo medir el espacio libre de {0}: {1}' -f $Drive, $_.Exception.Message)
    }
    return [int64]0
}