如何在Azure中确定虚拟机是否正在使用托管/非托管磁盘

yyyllmsg  于 2023-01-27  发布在  其他
关注(0)|答案(8)|浏览(218)

Azure中是否有方法可以确定Azure中的虚拟机是否已创建为托管/非托管磁盘?

yvt65v4c

yvt65v4c1#

我们可以使用PowerShell列出Azure VM的信息。
以下是非托管磁盘虚拟机输出:

PS C:\Users> (get-azurermvm -ResourceGroupName jasonvn -Name jasonvm1).StorageProfile.OsDisk
 StorageProfile and NetworkProfile, respectively.

OsType             : Linux
EncryptionSettings :
Name               : jasonvm1
Vhd                : Microsoft.Azure.Management.Compute.Models.VirtualHardDisk
Image              :
Caching            : ReadWrite
CreateOption       : FromImage
DiskSizeGB         :
ManagedDisk        :

以下是托管磁盘虚拟机输出:

PS C:\Users> (get-azurermvm -ResourceGroupName jasonvn -Name jasonvm).StorageProfile.OsDisk
 StorageProfile and NetworkProfile, respectively.

OsType             : Linux
EncryptionSettings :
Name               : jasonvm
Vhd                :
Image              :
Caching            : ReadWrite
CreateOption       : FromImage
DiskSizeGB         : 30
ManagedDisk        : Microsoft.Azure.Management.Compute.Models.ManagedDiskParameters

另一种方法是,我们可以使用Azure新门户检查自动化脚本以找到它:

ao218c7q

ao218c7q2#

Azure门户的其他区域也提供了此信息。请转到门户中的“虚拟机”列表,单击"列“按钮,然后添加名为“使用托管磁盘”的列。

jqjz2hbq

jqjz2hbq3#

要补充Jason Ye的答案,您还可以在Azure CLI 2.0中运行类似的命令。该命令为:

az vm show -g rg_name -n vm_name

非托管磁盘的输出为:

...
  "osDisk": {
      "caching": "ReadWrite",
      "createOption": "fromImage",
      "diskSizeGb": 32,
      "encryptionSettings": null,
      "image": null,
      "managedDisk": null,
      "name": "rhel-un",
      "osType": "Linux",
      "vhd": {
        "uri": "https://storageaccountname.blob.core.windows.net/vhds/....vhd"
      }

对于托管磁盘:

...
"osDisk": {
  "caching": "ReadWrite",
  "createOption": "fromImage",
  "diskSizeGb": 32,
  "encryptionSettings": null,
  "image": null,
  "managedDisk": {
    "id": "/subscriptions/sub_id/resourceGroups/rg_name/providers/Microsoft.Compute/disks/rhel_OsDisk_1...",
    "resourceGroup": "rg_name",
    "storageAccountType": "Standard_LRS"
  },
  "name": "rhel_OsDisk_1...",
  "osType": "Linux",
  "vhd": null
}
eiee3dmh

eiee3dmh4#

如果寻找操作系统磁盘,这将工作。可以国防部的数据磁盘。

$VmName="vmNameHere" #vmNameHere
$RGName="rgnameHere" #resourceGroupname

if((Get-AzureRmVM -Name $VmName -ResourceGroupName $RGName).StorageProfile.OsDisk.ManagedDisk -like ''){"$vmName,OS Disk,Unmanaged"}else{"$Vmname,OS Disk,Managed"}
7d7tgy0s

7d7tgy0s5#

与Scottge的answer类似,但如果您只是转到VM〉Disks〉select the disk,它会打开一个显示磁盘信息的刀片。在该刀片的顶部,如果磁盘未被管理,则在磁盘名称后显示“(unmanaged)”。如果磁盘被管理,则不显示任何内容。

e4yzc0pl

e4yzc0pl6#

这里是我发现的一种方法,请按照以下步骤确定磁盘类型:

  • 登录Azure门户。
  • 选择相关虚拟机。选择
  • 要检查的磁盘。请查看磁盘的URL。

非托管磁盘的URL如下所示:
/storage_account_name.blob.core.windows.net/VM_name/VM_name.vhd
托管磁盘的URL如下所示:
/subscriptions/0cbded86-6088-430c-a320-xxxxxxxxxxxx/resourceGroups/Resource_Group_name/providers/Microsoft.Compute/disks/Disk_name

atmip9wb

atmip9wb7#

这个帖子已经有几年的历史了,但是我已经找到了一个更好的方法来使用Powershell一次检查所有的磁盘。微软刚刚发邮件说他们将在2年内淘汰非托管磁盘,所以希望这能在那之前帮助到其他人!
这将尝试连接到Azure,安装模块(如果需要),获取你的所有虚拟机,并列出磁盘名称和ManagedDisk字段。如果你有很多虚拟机,我建议添加一个筛选器,以便仅在ManagedDisk字段为空时显示。

Try{Get-AzSubscription > Out-Null}
Catch{
    Try{Get-Module -ListAvailable -Name AZ.compute}
    Catch{
        Write-Host "Azure module does not exist, installing, importing, and connecting" -ForegroundColor Cyan
        [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
        Install-Module Az -Repository PSGallery -Force
    }
    Finally{
        Import-Module AZ

        Write-Verbose "Enter your Azure Admin Account creds" -ForegroundColor Cyan

        Connect-AzAccount
        Set-AzContext -Subscription "fe95db19-b91b-4492-990e-8c7c9ac355a4"
    }
}
Finally{
    Write-Host "You are connected to Azure" -ForegroundColor Cyan
}

#Get All VMs
$VMs = Get-AZVM 

#Go through each VM one at a time
ForEach($VM in $VMs){
    $VM.StorageProfile.OsDisk | Select Name,ManagedDisk
    $VM.StorageProfile.DataDisks | Select Name,ManagedDisk
}
kuuvgm7e

kuuvgm7e8#

它显示在虚拟机JSON预览中,也显示在osDisk下

相关问题