2

J'essaie de trouver la cmdlet PowerShell qui peut récupérer des informations sur le compte de stockage utilisé par Azure VM. Par exemple, je souhaite fournir le nom de VM et j'aimerais voir quel stockage cette VM utilise. Ou il sera également bon d'interroger un compte de stockage spécifique et de voir quelles machines virtuelles utilisent ce compte de stockage.Récupère le compte de stockage d'Azure VM

Je suis en train, mais cmdlets suivantes je ne peux pas voir les détails au sujet de compte de stockage:

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

Répondre

4

L'applet de commande Get-AzureDisk peut vous être utile. C'est l'approche que j'utilise.

$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

+0

S'il vous plaît noter que vous devrez peut-être être plus précis dans votre cmdlet Get-AzureDisk - si oui assurez-vous de vérifier la propriété HostedServiceName aussi bien dans AttachedTo. Pour être sûr que vous obtenez le bon disque. –

0

Chacun d'un disques de vm va être stocké dans un blob donné, avec les uri du blob contenant le nom du compte de stockage. Par exemple:

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

Vous auriez besoin de récupérer les différents disques disque et les données os uri de de vos machines virtuelles puis analyser le uri en conséquence. Voici un moyen d'obtenir le compte de stockage pour chaque disque en saisissant d'abord l'uri de base (mystorageaccount.blob.core.windows.net), puis en prenant le premier segment de chaîne (séparé par des points).

Pour le disque OS:

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

Et même pour les disques de données:

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

Vous obtiendrez des noms en double compte de stockage si vous avez utilisé le même compte de stockage pour plus d'un disque.

+0

Est-ce que '' myosdisk.vhd'' est le nom du compte de stockage? – santafebound

1

Je réponds à la deuxième partie de votre question. Vous voulez une liste de machines virtuelles sous un compte de stockage particulier. Supposons que votre nom de compte de stockage soit "xyz123" et que vous souhaitiez lister tous les vms sous ce compte de stockage. Ensuite, vous avez juste besoin de lancer le script donné ci-dessous-

$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 

Espoir Celui-ci va vous aider. Merci.

1

Oui. Storageaccount peut être trouvé pour RM basé VM.

Pour 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"