Public/Get-FinOpsInstanceSizeFlexibility.ps1
|
# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. <# .SYNOPSIS Gets the instance size flexibility group and ratio for an ARM SKU. .PARAMETER ArmSkuName Optional. The ARM SKU name to look up. Accepts wildcards. Default = * (all). .PARAMETER InstanceSizeFlexibilityGroup Optional. The instance size flexibility group to find SKUs for. Accepts wildcards. Default = * (all). .DESCRIPTION The Get-FinOpsInstanceSizeFlexibility command returns instance size flexibility (ISF) ratios, sourced from the Azure Reservations Catalogs API. ISF lets a reservation apply across multiple SKUs in the same flexibility group, weighted by a ratio. .EXAMPLE Get-FinOpsInstanceSizeFlexibility -ArmSkuName "Standard_D4s_v5" Returns the flexibility group and ratio for the Standard_D4s_v5 SKU. .EXAMPLE Get-FinOpsInstanceSizeFlexibility -InstanceSizeFlexibilityGroup "Dsv5 Series" Returns all SKUs in the Dsv5 Series flexibility group. .LINK https://aka.ms/ftk/Get-FinOpsInstanceSizeFlexibility #> function Get-FinOpsInstanceSizeFlexibility() { param( [Parameter(Position = 0)] [string] $ArmSkuName = "*", [Parameter(Position = 1)] [string] $InstanceSizeFlexibilityGroup = "*" ) # ArmSkuName is already unique per row in the source data, so no de-duplication is needed here. return Get-OpenDataInstanceSizeFlexibility ` | Where-Object { $_.ArmSkuName -like $ArmSkuName ` -and $_.InstanceSizeFlexibilityGroup -like $InstanceSizeFlexibilityGroup } ` | ForEach-Object { [PSCustomObject]@{ InstanceSizeFlexibilityGroup = $_.InstanceSizeFlexibilityGroup ArmSkuName = $_.ArmSkuName Ratio = $_.Ratio } } } |