Grundlagen: Datenträger per PowerShell auflisten und hinzufügen

Bevor virtuelle Maschinen VHDs verwenden können, müssen VHDs als Datenträger (engl. Disks) in Azure registriert werden. Über das Verwaltungsportal geht das im Bereich Virtuelle Computer, Datenträger und dort über den Befehl "Erstellen".

image

Registrieren von Datenträgern

In PowerShell verwenden wir den Befehl Add-AzureDisk, um eine VHD als Datenträger zu registrieren. Ein Datenträger kann entweder als einfacher Datenträger oder als Betriebssystemdatenträger registriert werden.

Das folgende Beispiel zeigt, wie mit dem Befehl Get-AzureDisk alle im aktuellen Abonnement registrierten Datenträger aufgelistet werden können.

Auch hier ist es wieder empfehlenswert, die Ausgabe übersichtlicher zu gestalten, wie das folgende Beispiel zeigt.

Ein neuer Datenträger kann mit dem PowerShell-Befehl Add-AzureDisk registriert werden. Hierbei sind zumindest die Parameter DiskName und MediaLocation anzugeben.

Das folgende Beispiel registriert die VHD “leasetest3-host3-2014-12-08.vhd” als Datenträger mit dem Namen “host3”.

Wichtig: die VHD wird als einfacher Datenträger und nicht als Betriebssystemdatenträger registriert!

Auch wenn die VHD ein Betriebssystem enthält, wird die VHD nicht automatisch als Betriebssystemdatenträger registriert. Dafür ist der optionale Parameter OS notwendig, der als Eingabe nur einen von zwei möglichen Werten akzeptiert: Windows oder Linux.

Wollten wir das Beispiel von gerade eben wiederholen, aber dieses Mal die VHD als Betriebssystemdatenträger registrieren, müssen wir den Befehl mit dem Parameter OS erweitern.

 Add-AzureDisk -DiskName host3 -MediaLocation https://pktest1.blob.core.windows.net/vhds/leasetest3-host3-2014-12-08.vhd -OS Windows

Hinzufügen und Entfernen von Datenträgern

Mit dem Hinzufügen eines einfachen Datenträgers haben wir zunächst den ersten Schritt absolviert, denn noch ist der Datenträger nicht in Funktion. Dazu brauchen wir den PowerShell-Befehl Add-AzureDataDisk. Der Datenträger kann zur Zeit der VM-Erstellung oder auch zur Laufzeit hinzugefügt werden.

Im folgenden Beispiel fügen wir der virtuellen Maschine "host2" den Datenträger "host3" hinzu, den wir weiter oben erstellt haben. Wenn der Datenträger schon existiert und registriert ist, dann ist der Parameter Import zu verwenden. Da wir im Beispiel weiter oben den Datenträger bereits registriert ist, geben wir demnach auch den Parameter Import mit an.

Existiert der Datenträger noch nicht, kann mit dem Befehl Add-AzureDataDisk auch ein neuer Datenträger erstellt werden. Hierfür ist der Parameter CreateNew zu verwenden. Wenn man keinen Speicherort mit dem Parameter MediaLocation angibt, verwendet der Befehl das aktuelle Speicherkonto und erstellt die neue VHD im Container "vhds". Sollte der Container noch nicht vorhanden sein, wird dieser erstellt.

Daher ist es wichtig, wenn man MediaLocation nicht angibt, sicherzustellen, dass das aktuelle Speicherkonto angegeben ist. Im folgenden Beispiel passieren folgende Schritte:

  1. Zunächst lasse ich mir mit dem Befehl Get-AzureSubscription Informationen zum aktuellen Abonnement anzeigen. Hier sieht man, dass das aktuelle Speicherkonto nicht gesetzt ist. (Eigenschaft CurrentStorageAccount)
  2. Danach versuche wider besseren Wissens einen neuen Datenträger mit Add-AzureDataDisk zu erstellen und gebe den Speicherort nicht an. Erwartungsgemäß wird dies mit einem Fehler quittiert, dass entweder der Parameter MediaLocation angegeben werden muss oder das aktuelle Speicherkonto gesetzt werden muss.
  3. Mit dem Befehl Get-AzureStorageAccount schaue ich nach, welche Speicherkonten im aktuellen Abonnement existieren.
  4. Mit dem Befehl Set-AzureSubscription und dem Parameter CurrentStorageAccountName setze ich das aktuelle Speicherkonto.
  5. Ich wiederhole den Befehl aus Schritt 2. Dadurch wird eine neue VHD erstellt, die automatisch als neuer Datenträger registriert und der VM hinzugefügt wird.

Weitere Informationen

PowerShell: Azure-Automatisierung für Einsteiger (Microsoft Virtual Academy)

Grundlagen: Azure & PowerShell: VMs erstellen (MSDN Blogs)

Skripte

Für den Fall, dass die Skripte auf GitHub Gist nicht aufrufbar sind, sind diese hier noch einmal unformatiert aufgeführt.

Get-AzureDisk (vollständige Ausgabe)

 Get-AzureDisk

<# Output

AffinityGroup : 

AttachedTo : RoleName: host2 

DeploymentName: host2 

HostedServiceName: leasetest2

IsCorrupted : False

Label : 

Location : West Europe

DiskSizeInGB : 128

MediaLink : https://pktest1.blob.core.windows.net/vhds/leasetest2-host2-2014-12-08.vhd

DiskName : host2-host2-0-201412081048370142

SourceImageName : a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201411.01-en.us-127GB.vhd

OS : Windows

IOType : Standard

OperationDescription : Get-AzureDisk

OperationId : 9d03c61b-f609-5e7e-ad91-5eefd89492b6

OperationStatus : Succeeded

#>

Get-AzureDisk (formatierte Ausgabe)

 
Get-AzureDisk | Format-Table -Property DiskName, AttachedTo -AutoSize 

<# Output

DiskName AttachedTo 

-------- ---------- 

host2-host2-0-201412081048370142 RoleName: host2 ... 

host4-host4-0-201412081236310110 RoleName: host4 ... 

host5-host5-0-201412081327460337 RoleName: host5 ... 

#>

Add-AzureDisk (VHD als Datenträger registrieren)

 
Add-AzureDisk -DiskName host3 -MediaLocation https://pktest1.blob.core.windows.net/vhds/leasetest3-host3-2014-12-08.vhd 

<# Output

AffinityGroup : 

AttachedTo : 

IsCorrupted : False

Label : host3

Location : West Europe

DiskSizeInGB : 128

MediaLink : https://pktest1.blob.core.windows.net/vhds/leasetest3-host3-2014-12-08.vhd

DiskName : host3

SourceImageName : 

OS : 

IOType : Standard

OperationDescription : Add-AzureDisk

OperationId : 92cf9ded-9ace-59ef-81e9-f10ca7006d84

OperationStatus : Succeeded

#>

Add-AzureDataDisk & Remove-AzureDataDisk (Datenträger einer VM hinzufügen & entfernen)

 
Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -DiskName host3 -Import -LUN 1 -HostCaching ReadWrite | Update-AzureVM

<# Output

OperationDescription OperationId OperationStatus 

-------------------- ----------- --------------- 

Update-AzureVM dd2a228c-9a60-5449-9568-0a9ef10e9250 Succeeded 

#>

Get-AzureVM -ServiceName leasetest2 -Name host2 | Remove-AzureDataDisk -LUN 1 | Update-AzureVM

<# Output

OperationDescription OperationId OperationStatus 

-------------------- ----------- --------------- 

Update-AzureVM 269f6e1f-f7c6-5158-bd2b-f1081067f000 Succeeded 

#>

Add-AzureDataDisk (neue VHD erzeugen)

Get-AzureSubscription -SubscriptionName "Azure MSDN - pkirchner"

<# Output

SubscriptionId : c6264819-a8d6-4279-b493-4a47f4300c54

SubscriptionName : Azure MSDN - pkirchner

Environment : AzureCloud

SupportedModes : AzureServiceManagement

DefaultAccount : BE130E17300A9E2F90B1A0575557266671623B04

Accounts : {BE130E17300A9E2F90B1A0575557266671623B04}

IsDefault : True

IsCurrent : True

CurrentStorageAccountName : 

#>

Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -CreateNew -DiskLabel "DataDisk2" -DiskSizeInGB 1023 -LUN 0 -HostCaching ReadWrite | Update-AzureVM

<# Output

Add-AzureDataDisk : Must specify MediaLocation or set a default storage account using Set-AzureSubscription.

In Zeile:1 Zeichen:51

+ Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -CreateNew - ...

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : CloseError: (:) [Add-AzureDataDisk], ArgumentException

+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.AddAzureDataDiskCommand

#>

Get-AzureStorageAccount

<# Output

StorageAccountDescription : 

AffinityGroup : 

Location : West Europe

GeoReplicationEnabled : 

GeoPrimaryLocation : West Europe

GeoSecondaryLocation : 

Label : pktest1

StorageAccountStatus : Created

StatusOfPrimary : Available

StatusOfSecondary : 

Endpoints : {https://pktest1.blob.core.windows.net/, https://pktest1.queue.core.windows.net/, 

https://pktest1.table.core.windows.net/, https://pktest1.file.core.windows.net/}

AccountType : Standard_LRS

StorageAccountName : pktest1

OperationDescription : Get-AzureStorageAccount

OperationId : db4c00ce-ed1c-5351-8de7-1b595419a5dc

OperationStatus : Succeeded

WARNUNG: GeoReplicationEnabled property will be deprecated in a future release of Azure PowerShell. The value will be merged into the AccountType pr

operty.

#>

Set-AzureSubscription -SubscriptionName "Azure MSDN - pkirchner" -CurrentStorageAccountName pktest1 

Get-AzureVM -ServiceName leasetest2 -Name host2 | Add-AzureDataDisk -CreateNew -DiskLabel "DataDisk2" -DiskSizeInGB 1023 -LUN 0 -HostCaching ReadWrite | Update-AzureVM

<# Output

OperationDescription OperationId OperationStatus 

-------------------- ----------- --------------- 

Update-AzureVM c2187124-547c-55c3-a0ef-0129474e02b9 Succeeded 

#>

English Summary

This article describes how to register VHDs as simple data disks and as operating system disks in Azure via PowerShell. You register a VHD as disk with the PowerShell command Add-AzureDisk. You add a disk to a VM with the command Add-AzureDataDisk.