public/Export-SilkTCOAWS.ps1

Function Export-SilkTCOAWS {
    param(
        [Parameter()]
        [int] $days = 1,
        [Parameter()]
        [string] $region,
        [Parameter()]
        [string] $inputFile,
        [Parameter()]
        [string] $TagKey,
        [Parameter()]
        [string] $TagValue,
        [Parameter()]
        [switch] $allVMs
    )

    # Build parameter hashtable for New-SilkTCOAWSVMList
    $vmListParams = @{}
    if ($region) { $vmListParams['Region'] = $region }
    if ($inputFile) { $vmListParams['inputFile'] = $inputFile }
    if ($TagKey) { $vmListParams['TagKey'] = $TagKey }
    if ($TagValue) { $vmListParams['TagValue'] = $TagValue }
    if ($allVMs) { $vmListParams['allVMs'] = $true }

    $vmlist = New-SilkTCOAWSVMList @vmListParams 
    $metrics = New-SilkTCOAWSVMMetrics -vmlist $vmlist -days $days -Verbose
    
    # Pass region only if specified, otherwise let cost function auto-detect
    if ($region) {
        $costs = New-SilkTCOAWSCostArray -vmlist $vmlist -region $region -days $days -Verbose
    } else {
        $costs = New-SilkTCOAWSCostArray -vmlist $vmlist -days $days -Verbose
    }
    
    $report = Merge-SilkTCOAWSData -vmlist $vmlist -metrics $metrics -costs $costs

    $report | export-csv -Path ".\SilkTCO_Report_$((Get-Date).ToString('yyyyMMdd_HHmmss')).csv" -NoTypeInformation
}