刚刚遇到这个问题,因为我正在追踪订阅中的成本最高。
一种有用的工具是Azure 存储资源管理器。您可以浏览表格、检查其内容、使用表格统计按钮来计算表格行数、多选和删除行。
对于一个自 2016 年以来一直在运行的小型 VM,我发现 WADMetrics 表似乎每 10 天滚动一次,但其他表则没有。示例 WADMetrics 表包含 5724 个条目。WASWindowsEventLogsTable 包含 10,022 个条目。当 WADPerformanceCountersTable 达到 500 万个条目时,我取消了它。存储统计信息的成本高于 VM 的 VHD。
本文总结了有关用于操作表的 PowerShell 命令的有用信息。不幸的是,Azure Cloud Shell 还不支持在表中工作的命令,例如 Get-AzTableRow(请参阅此报告)。我认为如果您在本地设置最新的 Az PowerShell 命令,这将起作用。然后,您可以使用筛选器进行选择并使用 Remove-AzTableRow 删除一些行。就我而言,这台机器已经退役,所以我只需要一种方法来删除大量表,而无需单击仪表板中的每个表。以下是一些示例命令:
$location = "uswest"
$resourceGroup = "myRG"
$storageAccountName = "myData"
$storageAccount = get-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccountName
$ctx = $storageAccount.Context
# List all tables in storage account
Get-AzStorageTable -Context $ctx
# Count the WADMetrics tables
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*").count
# Count the WADMetrics tables with "2018" in their name
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*").count
# Remove all WADMetrics tables with "2018" in their name without confirmation, then re-count
# Only Get- supports wilcards, so pipe to Remove-AzStorageTable command
Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*" | Remove-AzStorageTable -Force
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*2018*").count
# Remove the big tables. Confirmation takes a long time, so suppress it.
Remove-AzStorageTable -Context $ctx -Name "WADWindowsEventLogsTable" -Force
Remove-AzStorageTable -Context $ctx -Name "WADPerformanceCountersTable" -Force
# The following do NOT work in Azure Cloud Shell as of 07/16/2019. See
# https://github.com/MicrosoftDocs/azure-docs/issues/28608
# Count the rows in WADWindowsEventLogsTable
$tableName = "WADWindowsEventLogsTable"
$cloudTable = (Get-AzStorageTable -Context $ctx -Name $tableName).CloudTable
$cloudTableResults = Get-AzTableRow -table $cloudTable -columnName "RowKey"
$cloudTableResults.count