【问题标题】:Azure PS cmdlet for Disk Details in ARM用于 ARM 中磁盘详细信息的 Azure PS cmdlet
【发布时间】:2017-01-13 13:12:37
【问题描述】:

我正在尝试列出一份订阅中磁盘的详细信息。对于经典门户中的所有磁盘,这很容易使用 - Get-AzureDisk

但是,这并没有列出位于较新门户中的磁盘。我尝试在 ARM 中找出等效的命令,但找不到。

注意:我使用的是 Azure PS 版本 1.5.0。我不想列出 VM 的磁盘详细信息,而是对清理新门户中的孤立磁盘感兴趣。

【问题讨论】:

标签: azure azure-storage azure-powershell azure-resource-manager


【解决方案1】:

这里的问题是 ARM 没有磁盘的概念,它只是有一个存在于存储中的文件。当您将该文件作为 VHD 附加到 VM 时,它会成为附加到 VM 的磁盘。

当您要查询需要查询 VM 的磁盘时,您将获得有关附加到它的磁盘的信息。

正如singhkays 在 cmets 的 github 问题中所述

没有用于获取数据磁盘的直接 API。 Get-AzureRmVM 作为 VM 返回的一部分返回数据磁盘

StorageProfile : {
"DataDisks": [
 {
  "Lun": 0,
  "Caching": "ReadWrite",
  "CreateOption": "Empty",
  "DiskSizeGB": 1,
  "Name": "data-disk-1",
  "SourceImage": null,
  "VirtualHardDisk": {
  "Uri": "http://jenkinswinstore.blob.core.windows.net/vhds/data-disk-1.vhd"
   }
  }
],

【讨论】:

  • 如果我删除了保留其 vhd 的 VM 怎么办。如何在 ARM 中获取该 vhd 的详细信息?
  • 您需要查看您的存储帐户并手动找到它
【解决方案2】:

我对清理新门户中的孤立磁盘很感兴趣。

如果您只是想在新门户中找到孤立的磁盘,实际上,您正在尝试找到未租用的 vhd。

然后,您只需查询 vhd 文件的“ICloudBlob.Properties.LeaseStatus”属性即可。

我为你写了一个示例脚本,它对我有用。

$RGName = "stlvm"
$SAName = "stlvmstorage"
$ConName = "vhds"
$TempObj = New-Object -TypeName PSCustomObject
$TempObj |Add-Member -Name BlobName -MemberType NoteProperty -Value $null
$TempObj |Add-Member -Name LeaseState -MemberType NoteProperty -Value $null
$Keylist = Get-AzureRmStorageAccountKey -ResourceGroupName $RGName -StorageAccountName $SAName
$Key = $Keylist[0].Value
$Ctx = New-AzureStorageContext -StorageAccountName $SAName -StorageAccountKey $Key
$List = Get-AzureStorageBlob -Blob *.vhd -Container $ConName -Context $Ctx
$List | ForEach-Object { $TempObj.BlobName = $_.Name; $TempObj.LeaseState = $_.ICloudBlob.Properties.LeaseState; $TempObj }

这是我实验室的截图:

【讨论】:

  • 我要测试你的脚本。将投票并相应地打勾。干杯!
猜你喜欢
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2012-03-19
相关资源
最近更新 更多