我正在尝试查找PowerShell cmdlet,它可以检索有关Azure VM使用的存储帐户的信息。 例如,我想提供VM的名称,我想看看VM使用哪个存储。或者查询特定存储帐户并查看哪些VM使用此存储帐户也是一件好事。
我正在尝试关注cmdlet,但我看不到有关存储帐户的详细信息:
Select-AzureSubscription -SubscriptionName "name"
Get-AzureVM -Name "name" -ServiceName "name"
答案 0 :(得分:4)
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
答案 1 :(得分:2)
我正在回答你问题的第二部分。您需要特定存储帐户下的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
希望这个会帮助你。感谢。
答案 2 :(得分:1)
是。可以找到基于 RM 的VM的Storageaccount
。
对于操作系统:
$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"
答案 3 :(得分:0)
每个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] }
如果您为多个磁盘使用相同的存储帐户,则会获得重复的存储帐户名称。