Private/Test-ConfigurationFileSizeOnDisk.ps1
function Test-ConfigurationFileSizeOnDisk { [CmdletBinding()] param( [Parameter(Mandatory)] [ValidateScript({ Test-Path -Path $_ -PathType Leaf })] [string]$ConfigurationPackage, [Parameter()] [ValidateScript({ Test-Path -Path $_ -PathType Container })] $StagingFolder = $pwd.Path, [Parameter()] [Switch] $CompressConfiguration ) begin { Write-Verbose 'Test-ConfigurationFileSizeOnDisk started' Write-Verbose "Running with parameter set: $($PSCmdlet.ParameterSetName)" Write-Verbose "Received parameters: $($PSBoundParameters| ConvertTo-Json)" } process { $configurationPackageFile = Get-Item -Path $ConfigurationPackage $unzipFolder = New-Item -Path $StagingFolder -Name $configurationPackageFile.BaseName -ItemType Directory -ErrorAction Stop Write-Verbose "Expanding configuration package: $($configurationPackageFile.FullName) to staging folder: $($stagingFolder.FullName)" Expand-Archive -Path $configurationPackageFile.FullName -DestinationPath $unzipFolder.FullName -Force if($CompressConfiguration) { Compress-ConfigurationFileSizeOnDisk -ExtractedConfigurationPackageFolder $unzipFolder.FullName } $fileSize = Get-ChildItem -Path $unzipFolder.FullName -Recurse | Measure-Object -Property Length -Sum if($fileSize.Sum -gt 100MB) { Write-Warning "The extracted configuration package is too large. The maximum supported size for Azure Guest Configuration is 100MB. The current size is $([Math]::Round(($fileSize.Sum / 1024 / 1024),2,[System.MidpointRounding]::AwayFromZero)) MB." return $false } $true } end { } } |