DSCResources/POSHOrigin_vSphere_VM/Helpers/_TestVMDisks.ps1
function _TestVMDisks { [cmdletbinding()] param ( [Parameter(Mandatory)] [ValidateNotNull()] $vm, [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string]$DiskSpec ) begin { Write-Debug -Message '_TestVMDisks() starting' } process { try { $configDisks = ConvertFrom-Json -InputObject $DiskSpec -Verbose:$false $vmDisks = @($vm | Get-HardDisk -Verbose:$false -Debug:$false) Write-Debug -Message "Configuration disk count: $(@($configDisks).Count)" Write-Debug -Message "VM disk count: $(@($vmDisks).Count)" if ( @($configDisks).Count -ne @($vmDisks).Count) { Write-Verbose -Message 'Disk count does not match configuration' $pass = $false return $pass } foreach ($disk in $configDisks) { Write-Debug -Message "Validating VM disk [$($disk.Name)]" $vmDisk = $vmDisks | Where-Object {$_.Name.ToLower() -eq $disk.Name.ToLower() } if ($null -eq $vmDisk) { Write-Verbose -Message "Disk [$($disk.Name)] does not exist on VM" return $false } $vmDiskCap = [system.math]::round($vmDisk.CapacityGB, 0) if ($vmDiskCap -ne $disk.SizeGB) { Write-Verbose -Message "Disk [$($disk.Name)] does not match configured size" return $false } $vmDiskStorageFormat = '' if ($null -ne $vmDisk.StorageFormat) { $vmDiskStorageFormat = $vmDisk.StorageFormat } $diskStorageFormat = '' if ($null -ne $disk.Format) { $diskStorageFormat = $disk.Format } if ($vmDiskStorageFormat.ToString().ToLower() -ne $diskStorageFormat.ToLower()) { Write-Verbose -Message "Disk [$($disk.Name)] does not match configured format" return $false } if ($vmDisk.DiskType.ToString().ToLower() -ne $disk.Type.ToLower()) { Write-Verbose -Message "Disk [$($disk.Name)] does not match configured type" return $false } } return $true } catch { Write-Error -Message 'There was a problem testing the disks.' Write-Error -Message "$($_.InvocationInfo.ScriptName)($($_.InvocationInfo.ScriptLineNumber)): $($_.InvocationInfo.Line)" Write-Error $_ } } end { Write-Debug -Message '_TestVMDisks() ending' } } |