【问题标题】:Get AzureRm Managed Disk Space Usage and Free Space - Powershell获取 AzureRm 托管磁盘空间使用情况和可用空间 - Powershell
【发布时间】:2018-07-24 10:24:48
【问题描述】:

我一直在尝试创建一个脚本,该脚本可以获取 Azure 中所有托管磁盘的列表,其中包括 vmname、磁盘名、大小、OSType 和资源组名称,更重要的是可用空间和剩余可用磁盘空间。

我可以使用 Powershell 获取基本信息,但我似乎无法获取当前磁盘使用情况和剩余可用空间,我希望得到一些指导或指出正确的方向。

$vms = Get-AzureRmVM 
foreach ($vm in $vms) {
Get-AzureRmDisk | select -Property $vm.Name,Name,DiskSizeGB,OSType,ResourceGroupName
}

提前致谢

【问题讨论】:

    标签: powershell azure


    【解决方案1】:

    据我所知,这是不可能的。您可以查看managed disk rest APi。 Azure 不提供此类参数。

    因此,您无法使用 Azure Power Shell 获取托管磁盘使用信息,您只能获取总空间。

    一个解决方案,您需要登录您的虚拟机并使用命令来获取您的磁盘使用情况。

    【讨论】:

    • @Shenbao Shui - MSFT 感谢您提供的信息,您的意思是登录每个 vm 并运行提供磁盘信息的 powershell 命令,例如 wmi 查询 win32_logicaldisk .. 这在 Azure 中有效吗?
    • @NorrinRad 是的,我认为它应该可以工作。但是在你的虚拟机中,你应该挂载这个托管磁盘。
    • @NorrinRad 喜欢这个answer
    • 太好了,如果我每个订阅有 30 个虚拟机,4 个订阅超过 2 个租户,基本上我们想检查磁盘使用情况,这样我们就可以考虑减少磁盘大小作为节省资金的一部分。希望这是有道理的
    • @NorrinRad 托管磁盘与非托管磁盘不同。托管磁盘成本取决于总大小。换句话说,如果您创建了一个 32 GB 大小的托管磁盘,但您只使用了 1 GB。您还需要为 32 GB 付费。
    【解决方案2】:

    您也可以使用 Hybrid-Worker 并运行以下命令:

    获取所有本地磁盘(不包括临时驱动器 D)

    $Disks = get-WmiObject win32_logicaldisk `
    | Where-Object -Property VolumeName -ne "Temporary Storage"
    

    以百分比计算可用空间并创建一个 PS 自定义对象

    $Report = @()
    foreach ($Disk in $Disks) {
        $myObject = [PSCustomObject]@{
            Hostname     = hostname
            Disk         = $Disk.DeviceID
            FreeSpace    = [math]::Round((($Disk.FreeSpace * 100) / $Disk.Size),0)
        }
        $Report += $myObject
    }
    

    并将结果存储在 StorageAccount 表中

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 2011-06-16
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多