| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 
 | function Get-CloudCostAnalysis {[CmdletBinding()]
 param(
 [Parameter(Mandatory=$true)]
 [ValidateSet('Azure','AWS')]
 [string]$CloudProvider
 )
 
 $threshold = 100
 
 switch ($CloudProvider) {
 'Azure' {
 $costData = Get-AzConsumptionUsageDetail -BillingPeriodName (Get-Date).ToString('yyyyMM') |
 Group-Object ResourceGroup |
 Select-Object Name,@{N='Cost';E={$_.Group.PretaxCost | Measure-Object -Sum | Select-Object -Expand Sum}}
 }
 'AWS' {
 $costData = Get-CECostAndUsage -TimePeriod @{Start=(Get-Date).AddDays(-30).ToString('yyyy-MM-dd');End=(Get-Date).ToString('yyyy-MM-dd')} -Granularity MONTHLY |
 Select-Object -Expand ResultsByTime |
 Select-Object -Expand Groups |
 Where-Object {$_.Metrics.UnblendedCost.Amount -gt $threshold}
 }
 }
 
 $costData | Export-Csv -Path "${CloudProvider}_Cost_Report_$(Get-Date -Format yyyyMMdd).csv" -NoTypeInformation
 
 if ($costData.Count -gt 5) {
 Send-MailMessage -To 'finops@company.com' -Subject "[$CloudProvider] 成本异常警报" -Body "发现${threshold}美元以上资源:$($costData.Count)项"
 }
 }
 
 |