繁体   English   中英

获取Azure VM的存储帐户

[英]Get storage account of Azure VM

我正在尝试查找PowerShell cmdlet,它可以检索有关Azure VM使用的存储帐户的信息。 例如,我想提供VM的名称,我想看看VM使用哪个存储。 或者,查询特定存储帐户并查看哪些VM使用此存储帐户也很有用。

我正在尝试关注cmdlet,但我看不到有关存储帐户的详细信息:

Select-AzureSubscription -SubscriptionName "name"
Get-AzureVM -Name "name" -ServiceName "name"

Get-AzureDisk cmdlet可能对您有用。 这是我正在使用的方法。

$disk = Get-AzureDisk | Where-Object { $_.AttachedTo.RoleName -eq "YOURVMNAME" }
$mediaLink = $disk.MediaLink
$storageAccountName = $mediaLink.Host.Split('.')[0]

https://msdn.microsoft.com/en-us/library/azure/dn495125.aspx

我正在回答你问题的第二部分。 您需要特定存储帐户下的VM列表。 假设您的存储帐户名称为“xyz123”,并且您要列出此存储帐户下的所有虚拟机。 然后你只需要运行下面给出的脚本 -

$vms = Get-AzureVM
$output = " "
$tgtStorageaccount = "xyz123"

foreach($vm in $vms)
{
  $disk = Get-AzureVM -ServiceName $vm.ServiceName –Name $vm.Name | Get-AzureOSDisk
  $mediaLink = $disk.MediaLink
  $storageAccountName = $mediaLink.Host.Split('.')[0]

  if ($storageAccountName -eq $tgtStorageaccount)
  {
    $output  =$output + "`r`n" + $vm.Name 
  }
}
$output

希望这个会帮助你。 谢谢。

是。 可以为基于RM的VM找到Storageaccount

对于OS:

$output = Get-AzureRmVM -ResourceGroupName "xx-RG-xx-DEv" -Name "xx-xx-vm-DEV"
$storageAccountName = $output.StorageProfile.OsDisk.Vhd.Uri.Split("/")[2].Split(".")[0]
Get-AzureRmStorageAccount -StorageAccountName $storageAccountName -ResourceGroupName "xx-RG-xx-DEv"

每个vm的磁盘都将存储在给定的blob中,blob的uri包含存储帐户名。 例如:

https://mystorageaccount.blob.core.windows.net/vhds/myosdisk.vhd

您需要从vm中检索各种os磁盘和数据磁盘uri,然后相应地解析uri。 这是通过首先获取基础uri( mystorageaccount.blob.core.windows.net )然后获取第一个字符串段(由点字符分隔)来获取每个磁盘的存储帐户的方法。

对于操作系统磁盘:

Get-AzureVM -ServiceName myservice -Name myvmname |
GetAzureOSDisk |
ForEach-Object { $_.MediaLink.Host.split(".")[0] }

同样对于数据磁盘:

Get-AzureVM -ServiceName myservice -Name myvmname |
GetAzureDataDisk |
ForEach-Object { $_.MediaLink.Host.split(".")[0] }

如果您对多个磁盘使用相同的存储帐户,则会获得重复的存储帐户名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM