Kurztipp: DHCP-Server migrieren
21. August 2017Microsoft hat das Format der VM-Konfigurationsdateien verändert, um eine höhere Zuverlässigkeit zu erzeugen. Auch Sicherheitsbedenken spielten laut Microsoft dabei eine Rolle, so ist es deutlich schwieriger (etwa für Schadsoftware oder Hacker) eine Datei im binären Format zu manipulieren, als eine XML- oder Textdatei. Vielleicht möchte Microsoft auch zudem noch die Systembetreuer an dieser Stelle etwas „aussperren“, damit diese keine (ungetesteten) Änderungen vornehmen, was zu Lasten der VM-Stabilität gehen könnte.
Seit Hyper-V Version 2016 wurden die VM-Konfigurationsdateien umgestellt: Statt XML-Dateien sind die benötigten Konfigurationsparameter nun in einer Binären Datei (mit der Dateiendung VMCX) abgespeichert. Wie können die Infos trotzdem schnell und effizient ausgelesen werden?
Falls sich die Systembetreuer Fragen, auf welche Weise sich die Konfigurationsdateien von virtuellen Maschinen (VMs) unter Hyper-V-2016 auslesen können, liefert John Savill eine Antwort: Ein temporäres Objekt mit dem kopierten Inhalt der Konfig-Datei erzeugen:
$tempVM = (Compare-VM -Copy -Path .\yourvmcxfile.vmcx -GenerateNewID).VM
Dabei lassen sich beispielsweise alle Schlüsseleigenschaften wie folgt auslesen:
$tempVM | select *
Zudem können die Admins auch eine Auswahl der Eigenschaften definieren. Etwa falls nur die Netzwerkadapter oder die virtuellen Festplatten von Interesse sind:
$tempVM.NetworkAdapters $tempVM.HardDrives $tempVM.FibreChannelHostBusAdapters
Dabei lässt sich auch die Autovervollständigen-Funktion (Taste „TAB“) der Powershell nutzen, wenn TAB nach dem folgenden Eingabe (mehrfach) gedrückt wird, lassen sich alle vorhandenen Einträge nacheinander durchsehen:
$tempVM.
Hier ein Codebeispiel beim Einsatz des Cmclets:
PS C:\> $tempVM = (Compare-VM -Copy -Path .\DF8560F4-4A6A-49B7-8E87-3B54D4101B40.vmcx -GenerateNewID).VM PS C:\> $tempVM Name State CPUUsage(%) MemoryAssigned(M) Uptime Status ---- ----- ----------- ----------------- ------ ------ savdaldemo01 Off 0 0 Operating normally PS C:\> $tempVM | select * VMName: savdaldemo01 VMId : 904f432b-d545-4a9f-9560-8dc9145a56ae Id : 904f432b-d545-4a9f-9560-8dc9145a56ae Name : savdaldemo01 State : Off IntegrationServicesState : OperationalStatus : {Ok} PrimaryOperationalStatus : Ok SecondaryOperationalStatus : StatusDescriptions : {Operating normally} PrimaryStatusDescription : Operating normally SecondaryStatusDescription : Status: Operating normally Heartbeat : ReplicationState : ReplicationHealth : ReplicationMode : CPUUsage : 0 MemoryAssigned : 0 MemoryDemand : 0 MemoryStatus : SmartPagingFileInUse : Uptime: IntegrationServicesVersion : ResourceMeteringEnabled : False AutomaticCriticalErrorAction : Pause AutomaticCriticalErrorActionTimeout : 30 ConfigurationLocation : C:\Virtuals SnapshotFileLocation : C:\Virtuals CheckpointType : Production AutomaticStartAction : StartIfRunning AutomaticStopAction : Save AutomaticStartDelay : 0 SmartPagingFilePath : C:\Virtuals NumaAligned : NumaNodesCount : NumaSocketCount : Key : Microsoft.HyperV.PowerShell.VirtualMachineObjectKey IsDeleted : False ComputerName : SAVDALHVFX Version : 6.0 Notes : #CLUSTER-INVARIANT#:{94838b88-2846-4e3d-9caa-850fb785fe3b} Generation : 2 Path : C:\Virtuals CreationTime : 8/5/2015 12:35:11 PM IsClustered : False SizeOfSystemFiles : 0 ParentSnapshotId : ParentSnapshotName : MemoryStartup : 2147483648 DynamicMemoryEnabled : False MemoryMinimum : 536870912 MemoryMaximum : 1099511627776 ProcessorCount : 1 RemoteFxAdapter : NetworkAdapters : {Network Adapter} FibreChannelHostBusAdapters : {} ComPort1 : Microsoft.HyperV.PowerShell.VMComPort ComPort2 : Microsoft.HyperV.PowerShell.VMComPort FloppyDrive : DVDDrives : {} HardDrives : {Hard Drive on SCSI controller number 0 at location 0} VMIntegrationService : {Time Synchronization, Heartbeat, Key-Value Pair Exchange, Shutdown...} PS C:\> $tempVM.NetworkAdapters Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses ---- -------------- ------ ---------- ---------- ------ ----------- Network Adapter False savdaldemo01 External Switch 000000000000