public/Merge-SilkTCOData.ps1
|
function Merge-SilkTCOData { param ( [Parameter(Mandatory)] [array] $vmlist, [Parameter(Mandatory)] [array] $metrics, [Parameter(Mandatory)] [array] $costs, [Parameter()] [switch] $breakoutVMs ) $newarray = @() foreach ($vm in $vmlist) { $vmname = $vm.Name $rgname = $vm.ResourceGroupName $vmId = $vm.id $diskmetrics = $metrics | Where-Object { $_."VM Name" -eq $vmname -and $_.ResourceGroup -eq $rgname } $vmskucost = $costs | Where-Object { $_.ResourceName -eq $vmname -and $_.MeterCategory -eq "Virtual Machines" -and $_.ResourceId -eq $vmId} $vmcost = $vmskucost.Cost if ($breakoutVMs) { Write-Verbose "---> Breaking out VM: $vmname" -Verbose $obj = [PSCustomObject] @{ VMName = $vmname ResourceGroupName = $rgname VMSize = $vm.HardwareProfile.VmSize DiskReadMB = $null DiskWriteMB = $null DiskReadIOPS = $null DiskWriteIOPS = $null DiskCostUSD = $null VMCostUSD = $vmcost "DiskSizeGB" = $null "Disk SKU" = $null "Disk Tier" = $null "Disk Class" = $null "Disk IOPS" = $null "Disk MBps" = $null "Region" = $d.Region "UptimePercentage" = $d.UptimePercentage Days = $d.Days } $newarray += $obj $vmcost = $null } foreach ($d in $diskmetrics) { # Write-Verbose "-> Processing disk $($d.'disk name') for VM $($vmname)" -Verbose # $azDisk = Get-AzDisk -ResourceGroupName $rgname -Name $d."disk name" $drg = ($d.ResourceGroup).ToLower() $diskcost = $costs | Where-Object { $_.ResourceName -eq $d."disk name" -and $_.MeterCategory -eq "Storage" -and $_.ResourceId -match $drg} $obj = [PSCustomObject] @{ VMName = $vmname ResourceGroupName = $rgname VMSize = $vm.HardwareProfile.VmSize DiskReadMB = $d."CompositeDiskReadBytes/sec-avg" DiskWriteMB = $d."CompositeDiskWriteBytes/sec-avg" DiskReadIOPS = $d."CompositeDiskReadOperations/Sec-avg" DiskWriteIOPS = $d."CompositeDiskWriteOperations/Sec-avg" DiskCostUSD = $diskcost.Cost VMCostUSD = $vmcost "DiskSizeGB" = $d.DiskSizeGB "Disk SKU" = $d.DiskSKU "Disk Tier" = $d."Disk Class" "Disk Class" = $d."Disk Tier" "Disk IOPS" = $d."Disk IOPS" "Disk MBps" = $d."Disk MBps" "Region" = $d.Region "UptimePercentage" = $d.UptimePercentage Days = $d.Days } $newarray += $obj } } return $newarray } |