如何使用 PowerShell 获取 Azure 订阅的当前成本
How to get the azure subscription current cost using PowerShell
我正在尝试使用 PowerShell 获取我的 Azure 订阅当前费用。
期望的输出:
例如:
货币=英镑
当前成本 = 370.74
Get-AzConsumptionUsageDetail -BillingPeriodName 202105
但这并没有给我想要的输出。
尝试以下 powershell 脚本:
$tenantId="76a1f773...b-86b9-d1ced3e15cda"
$clientId="0159ec7d-f...-a680-c4d40ab7a36c"
$clientSecret="o4eq4jj...I26uz26W~"
$secSecret = ConvertTo-SecureString $clientSecret -AsPlainText -Force
$pscredential = New-Object System.Management.Automation.PSCredential ($clientId, $secSecret)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
$dexResourceUrl="https://management.azure.com/"
$context = Get-AzContext
$token = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, $dexResourceUrl).AccessToken
$SubscriptionId = '3465e081-85b6-4b54-a3e1-15675acb615f'
$billingperiod = '202010-1'
#Create the REST-URL
$usageURL ="https://management.azure.com/subscriptions/$subscriptionid/providers/Microsoft.Billing/billingPeriods/$billingperiod/providers/Microsoft.Consumption/usageDetails?api-version=2017-11-30"
$header = @{
'Authorization' = "Bearer $($token)"
"Content-Type" = "application/json"
}
$UsageData = Invoke-RestMethod `
-Method Get `
-Uri $usageURL `
-ContentType application/json `
-Headers $header
ConvertTo-Json $UsageData
来源:
你能看看这对你有用吗:
- 尝试
AzConsumptionUsageDetail -BillingPeriodName <periodname> | Measure-Object PretaxCost -Sum
。其中期间名称的格式为 20210601
编辑:意识到我错过了你 post 中的明显内容,你已经尝试过 - 我将它留在这里以防其他人仍然觉得它对其他人有帮助。
- 否则为所有订阅设置预算,然后使用
Get-AzConsumptionBudget
。
最近在 OP 的帮助下,我们能够更接近他的需求。
下面的查询将为您提供上述月份的费用。例如:5 月份的费用
Get-AzConsumptionUsageDetail -BillingPeriodName 202105
但是,如果您的订阅不是从 5 月 1 日开始的,那么在这种情况下,上述查询将为您提供错误的费用。例如:您的结算周期是从 5 月 10 日到 6 月 9 日
要了解您的确切计费周期的费用,您需要先获取当前计费周期,然后根据计费周期 start/end 日期获取费用。
$currentBillingPeriod = Get-AzBillingPeriod -MaxCount 1
$startDate = $currentBillingPeriod.BillingPeriodStartDate.ToString("dd-MM-yyyy")
Write-Host "currentBillingPeriod startDate : " $startDate
$endDate = $currentBillingPeriod.BillingPeriodEndDate.ToString("dd-MM-yyyy")
Write-Host "currentBillingPeriod endDate : " $endDate
$currentCost = Get-AzConsumptionUsageDetail -StartDate $startDate -EndDate $endDate | Measure-Object -Property PretaxCost -Sum
Write-Host "Current Cost of Subscription : " $currentCost.Sum
我正在尝试使用 PowerShell 获取我的 Azure 订阅当前费用。
期望的输出:
例如:
货币=英镑
当前成本 = 370.74
Get-AzConsumptionUsageDetail -BillingPeriodName 202105
但这并没有给我想要的输出。
尝试以下 powershell 脚本:
$tenantId="76a1f773...b-86b9-d1ced3e15cda"
$clientId="0159ec7d-f...-a680-c4d40ab7a36c"
$clientSecret="o4eq4jj...I26uz26W~"
$secSecret = ConvertTo-SecureString $clientSecret -AsPlainText -Force
$pscredential = New-Object System.Management.Automation.PSCredential ($clientId, $secSecret)
Connect-AzAccount -ServicePrincipal -Credential $pscredential -Tenant $tenantId
$dexResourceUrl="https://management.azure.com/"
$context = Get-AzContext
$token = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, $dexResourceUrl).AccessToken
$SubscriptionId = '3465e081-85b6-4b54-a3e1-15675acb615f'
$billingperiod = '202010-1'
#Create the REST-URL
$usageURL ="https://management.azure.com/subscriptions/$subscriptionid/providers/Microsoft.Billing/billingPeriods/$billingperiod/providers/Microsoft.Consumption/usageDetails?api-version=2017-11-30"
$header = @{
'Authorization' = "Bearer $($token)"
"Content-Type" = "application/json"
}
$UsageData = Invoke-RestMethod `
-Method Get `
-Uri $usageURL `
-ContentType application/json `
-Headers $header
ConvertTo-Json $UsageData
来源:
你能看看这对你有用吗:
- 尝试
AzConsumptionUsageDetail -BillingPeriodName <periodname> | Measure-Object PretaxCost -Sum
。其中期间名称的格式为20210601
编辑:意识到我错过了你 post 中的明显内容,你已经尝试过 - 我将它留在这里以防其他人仍然觉得它对其他人有帮助。
- 否则为所有订阅设置预算,然后使用
Get-AzConsumptionBudget
。
下面的查询将为您提供上述月份的费用。例如:5 月份的费用
Get-AzConsumptionUsageDetail -BillingPeriodName 202105
但是,如果您的订阅不是从 5 月 1 日开始的,那么在这种情况下,上述查询将为您提供错误的费用。例如:您的结算周期是从 5 月 10 日到 6 月 9 日
要了解您的确切计费周期的费用,您需要先获取当前计费周期,然后根据计费周期 start/end 日期获取费用。
$currentBillingPeriod = Get-AzBillingPeriod -MaxCount 1
$startDate = $currentBillingPeriod.BillingPeriodStartDate.ToString("dd-MM-yyyy")
Write-Host "currentBillingPeriod startDate : " $startDate
$endDate = $currentBillingPeriod.BillingPeriodEndDate.ToString("dd-MM-yyyy")
Write-Host "currentBillingPeriod endDate : " $endDate
$currentCost = Get-AzConsumptionUsageDetail -StartDate $startDate -EndDate $endDate | Measure-Object -Property PretaxCost -Sum
Write-Host "Current Cost of Subscription : " $currentCost.Sum