Functions/Get-Ec2WindowsOndemandPrice.ps1
Function Get-Ec2WindowsOndemandPrice { <# .Synopsis Gets the hourly price of a Windows AWS EC2 instance type. #> Param( #The Instance type you wish to change the instance to, e.g. m4.large. To see all instance types see https://aws.amazon.com/ec2/instance-types/ [Parameter(Mandatory = $true)] [string] $InstanceType, [string] $Region = "us-east-1", [switch] $Monthly ) $ErrorActionPreference = "Stop" $AllRegions = (Get-AWSRegion).Region If ($AllRegions -notcontains $Region) { Write-Error "$Region is not a valid AWS Region, Valid regions are $AllRegions" } If (-not $Global:PricingObject) { $OnDemandPricing = Invoke-RestMethod -uri http://a0.awsstatic.com/pricing/1/ec2/mswin-od.min.js $IntroText = "/* `n* This file is intended for use only on aws.amazon.com. We do not guarantee its availability or accuracy.`n*`n* Copyright " + ((Get-Date).Year) + " Amazon.com, Inc. or its affiliates. All rights reserved.`n*/`ncallback(" | Out-String $IntroText2 = "/* `n* This file is intended for use only on aws.amazon.com. We do not guarantee its availability or accuracy.`n*`n* Copyright " + ((Get-Date).AddDays(-90).Year) + " Amazon.com, Inc. or its affiliates. All rights reserved.`n*/`ncallback(" | Out-String $OnDemandPricing = $OnDemandPricing.TrimStart($IntroText) $OnDemandPricing = $OnDemandPricing.TrimStart($IntroText2) $OnDemandPricing = $OnDemandPricing.TrimEnd(');') $Global:PricingObject = ($OnDemandPricing | ConvertFrom-Json).config.regions } $RegionPrices = $PricingObject | Where-Object { $_.region -eq $Region } $AllInstances = $RegionPrices.instancetypes.sizes $InstanceEntry = $AllInstances | Where-Object { $_.size -eq $InstanceType } if ($Monthly) { [math]::Round([float]$InstanceEntry.valuecolumns.prices.usd * 744, 2) } Else { $InstanceEntry.valuecolumns.prices.usd } } |