function Checkpoint-EC2Instances { <# .SYNOPSIS Get the EC2 instances for the specified profile and save them in the cached files .PARAMETER ProfileName A valid ProfileName #> [CmdletBinding()] [OutputType([object[]])] param( [Parameter(Mandatory = $true)] [string]$ProfileName ) $activityLabel = "Gathering instances" Assert-ValidAWSProfileName -ProfileName $ProfileName if (!(Test-IsCurrentAWSUserSessionValid -ProfileName $ProfileName)) { throw "User session is invalid. Please run Update-AWSProfile $($ProfileName.Replace('temp-',''))" } $PercentComplete = 1 Write-ProgressHelper -Activity $activityLabel -Status "Starting" -PercentComplete $PercentComplete $PercentComplete += 1 $allInstances = @() foreach ($region in (Get-AWSRegions)) { Write-ProgressHelper -Activity $activityLabel -Status $Region -PercentComplete $PercentComplete $instances = Get-EC2Instance -Region $region -ProfileName $ProfileName $PercentComplete += 20 Write-ProgressHelper -Activity $activityLabel -Status $Region -PercentComplete $PercentComplete $allInstances += ConvertFrom-EC2Instance -Instances $instances.Instances $PercentComplete += 4 Write-ProgressHelper -Activity $activityLabel -Status $Region -PercentComplete $PercentComplete } $ProfileName = $ProfileName.Replace("temp-","").ToLower() Write-ProgressHelper -Activity $activityLabel -Status "Saving instance file" -PercentComplete 98 $cacheFile = Get-CachePathEC2Instance -ProfileName $ProfileName ConvertTo-Json $allInstances -Depth 10 | Set-Content -Path $cacheFile Write-ProgressHelper -Activity $activityLabel -Status "Saving designation file" -PercentComplete 99 $cacheFile = Get-CachePathDesignations -ProfileName $ProfileName $allInstances.Designation | Sort-Object | Get-Unique | Set-Content -Path $cacheFile Write-Progress -Activity $activityLabel -Completed }