Private/Assert-OSDAppCacheFreeSpace.ps1
|
function Assert-OSDAppCacheFreeSpace { [CmdletBinding()] param( [Parameter(Mandatory)] [string]$CachePath, [Parameter(Mandatory)] [double]$MinimumFreeSpaceGB, [Parameter(Mandatory)] [string]$Operation, [string]$LogPath ) $driveLetter = [System.IO.Path]::GetPathRoot($CachePath).TrimEnd('\').TrimEnd(':') $volume = Get-Volume -DriveLetter $driveLetter -ErrorAction Stop $freeBytes = [double]$volume.SizeRemaining $requiredBytes = $MinimumFreeSpaceGB * 1GB $freeGB = [math]::Round($freeBytes / 1GB, 2) if ($LogPath) { Write-OSDAppLog -LogPath $LogPath -Component 'Cache' -Event 'FreeSpaceCheck' -Message 'Checked free space on the OSDCloud cache volume.' -Data @{ Operation = $Operation DriveLetter = $driveLetter FreeSpaceGB = $freeGB MinimumFreeSpaceGB = $MinimumFreeSpaceGB } } if ($freeBytes -lt $requiredBytes) { throw ('Insufficient free space on OSDCloud volume {0}: {1} GB available; {2} GB required before {3}.' -f $driveLetter, $freeGB, $MinimumFreeSpaceGB, $Operation) } [pscustomobject]@{ DriveLetter = $driveLetter FreeSpaceGB = $freeGB MinimumFreeSpaceGB = $MinimumFreeSpaceGB Sufficient = $true } } |