Benutzer mit den meisten Antworten
Automatisiertes Klonen verschiedener VMs unter Hyper-V mit Powershell im laufenden Betrieb möglich?

Frage
-
Hallo Zusammen,
besteht die Möglichkeit, virtuelle Maschinen, welche auf einem Windows Server 2008 R2 / Windows Server 2012 / Windows 8 Pro betrieben werden, im laufenden Betrieb per Powershell zu klonen? Bisher habe ich keine Lösung diesbezüglich gefunden. Auf den VMs laufen verschiedene Linux Distributionen und Windows Server Versionen.
Im Bereich Powershell bin ich noch recht neu, daher bitte ich um Nachsicht bei meiner Frage.
Viele Grüße
Antworten
-
Hallo Rene,
dazu gibt es ein Technet-Video auf Youtube.
http://www.youtube.com/watch?v=PGUecLd0EV8
Die Sprecher sind Bernhard Frank (blogs.technet.com/bernhard_frank) und Carsten Rachfahl (hyper-v-server.de)
Das Script findest du im Anhang:<# .Synopsis Function to clone a running VM .DESCRIPTION This function can be used to clone a running vm and connect the copied vhd´s and network .EXAMPLE Clone-VM -VMName vmdisktest -VMCloneName vmdisktest-clone -Path c:\VMs .EXAMPLE Clone-VM -VMName vmdisktest -VMCloneName vmdisktest-clone -Path c:\VMs -Switch Private .Notes Author: Niklas Akerlund Date: 2012-06-19 #> function Clone-VM { [CmdletBinding()] [OutputType([int])] Param ( # Name of the VM to be cloned [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] $VMName, [string] $VMCloneName, # Where to store the VM-clone [string] $Path, # Set to another network switch [string] $Switch = " " ) # Get VM $VM = Get-VM $VMName $VHDs = Get-VMHardDiskDrive -VM $VM #$VHDPath = (Get-VMHardDiskDrive -VM $VM).Path $VHDClonePath = "$Path\$VMCloneName\Virtual Hard Disks\" # Create a new array of VHD info $VHDOrg = @() foreach ($VHD in $VHDs){ $data = New-Object PSObject -property @{ VHDName = (Get-Item $VHD.Path).Name VHDPath = $VHD.Path ControllerType = $VHD.ControllerType ControllerNumber = $VHD.ControllerNumber ControllerLocation = $VHD.ControllerLocation } $VHDOrg +=$data } $VMNics = Get-VMNetworkAdapter -VM $VM # Take snapshot $VM | Checkpoint-VM New-Item -ItemType directory -Path $VHDClonePath New-VM -Name $VMCloneName -Path $Path -NoVHD -MemoryStartupBytes $VM.MemoryStartup -BootDevice IDE $VMClone = Get-VM -Name $VMCloneName Get-VMNetworkAdapter -VMName $VMCloneName | Remove-VMNetworkAdapter # Configure VM-Clon if ($VM.DynamicMemoryEnabled){ Set-VM -VMName $VMCloneName -ProcessorCount $VM.ProcessorCount -DynamicMemory -MemoryMinimumBytes $VM.MemoryMinimum -MemoryMaximumBytes $VM.MemoryMaximum }else{ Set-VM -VMName $VMCloneName -ProcessorCount $VM.ProcessorCount -StaticMemory } # Add all network cards foreach ($VMNic in $VMNics){ if ($Switch -eq " "){ Add-VMNetworkAdapter -VMName $VMCloneName -SwitchName $VMNic.SwitchName -IsLegacy $VMNic.IsLegacy }else{ Add-VMNetworkAdapter -VMName $VMCloneName -SwitchName $Switch -IsLegacy $VMNic.IsLegacy } } # Copy all VHDs foreach ($VHDcopy in $VHDOrg){ $Dest = $VHDClonePath + $VHDcopy.VHDName Copy-Item -Path $VHDcopy.VHDPath -Destination $Dest Add-VMHardDiskDrive -VMName $VMCloneName -ControllerType $VHDCopy.ControllerType -ControllerLocation $VHDCopy.ControllerLocation -ControllerNumber $VHDCopy.ControllerNumber -Path $Dest } # Remove snapshot $VM | Remove-VMSnapshot }
Beste Grüsse, M. Heitmann
MCSA: SQL Server 2012- Als Antwort vorgeschlagen M. Heitmann Dienstag, 24. September 2013 08:30
- Bearbeitet M. Heitmann Dienstag, 24. September 2013 09:10
- Als Antwort markiert Rene Keller Dienstag, 24. September 2013 13:10
-
Clone VM on Win 2012 Hyper-V v3 when it is running using Powershell
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Als Antwort vorgeschlagen M. Heitmann Dienstag, 24. September 2013 09:12
- Als Antwort markiert Rene Keller Dienstag, 24. September 2013 13:10
Alle Antworten
-
Hallo Rene,
dazu gibt es ein Technet-Video auf Youtube.
http://www.youtube.com/watch?v=PGUecLd0EV8
Die Sprecher sind Bernhard Frank (blogs.technet.com/bernhard_frank) und Carsten Rachfahl (hyper-v-server.de)
Das Script findest du im Anhang:<# .Synopsis Function to clone a running VM .DESCRIPTION This function can be used to clone a running vm and connect the copied vhd´s and network .EXAMPLE Clone-VM -VMName vmdisktest -VMCloneName vmdisktest-clone -Path c:\VMs .EXAMPLE Clone-VM -VMName vmdisktest -VMCloneName vmdisktest-clone -Path c:\VMs -Switch Private .Notes Author: Niklas Akerlund Date: 2012-06-19 #> function Clone-VM { [CmdletBinding()] [OutputType([int])] Param ( # Name of the VM to be cloned [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true, Position=0)] $VMName, [string] $VMCloneName, # Where to store the VM-clone [string] $Path, # Set to another network switch [string] $Switch = " " ) # Get VM $VM = Get-VM $VMName $VHDs = Get-VMHardDiskDrive -VM $VM #$VHDPath = (Get-VMHardDiskDrive -VM $VM).Path $VHDClonePath = "$Path\$VMCloneName\Virtual Hard Disks\" # Create a new array of VHD info $VHDOrg = @() foreach ($VHD in $VHDs){ $data = New-Object PSObject -property @{ VHDName = (Get-Item $VHD.Path).Name VHDPath = $VHD.Path ControllerType = $VHD.ControllerType ControllerNumber = $VHD.ControllerNumber ControllerLocation = $VHD.ControllerLocation } $VHDOrg +=$data } $VMNics = Get-VMNetworkAdapter -VM $VM # Take snapshot $VM | Checkpoint-VM New-Item -ItemType directory -Path $VHDClonePath New-VM -Name $VMCloneName -Path $Path -NoVHD -MemoryStartupBytes $VM.MemoryStartup -BootDevice IDE $VMClone = Get-VM -Name $VMCloneName Get-VMNetworkAdapter -VMName $VMCloneName | Remove-VMNetworkAdapter # Configure VM-Clon if ($VM.DynamicMemoryEnabled){ Set-VM -VMName $VMCloneName -ProcessorCount $VM.ProcessorCount -DynamicMemory -MemoryMinimumBytes $VM.MemoryMinimum -MemoryMaximumBytes $VM.MemoryMaximum }else{ Set-VM -VMName $VMCloneName -ProcessorCount $VM.ProcessorCount -StaticMemory } # Add all network cards foreach ($VMNic in $VMNics){ if ($Switch -eq " "){ Add-VMNetworkAdapter -VMName $VMCloneName -SwitchName $VMNic.SwitchName -IsLegacy $VMNic.IsLegacy }else{ Add-VMNetworkAdapter -VMName $VMCloneName -SwitchName $Switch -IsLegacy $VMNic.IsLegacy } } # Copy all VHDs foreach ($VHDcopy in $VHDOrg){ $Dest = $VHDClonePath + $VHDcopy.VHDName Copy-Item -Path $VHDcopy.VHDPath -Destination $Dest Add-VMHardDiskDrive -VMName $VMCloneName -ControllerType $VHDCopy.ControllerType -ControllerLocation $VHDCopy.ControllerLocation -ControllerNumber $VHDCopy.ControllerNumber -Path $Dest } # Remove snapshot $VM | Remove-VMSnapshot }
Beste Grüsse, M. Heitmann
MCSA: SQL Server 2012- Als Antwort vorgeschlagen M. Heitmann Dienstag, 24. September 2013 08:30
- Bearbeitet M. Heitmann Dienstag, 24. September 2013 09:10
- Als Antwort markiert Rene Keller Dienstag, 24. September 2013 13:10
-
Clone VM on Win 2012 Hyper-V v3 when it is running using Powershell
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Als Antwort vorgeschlagen M. Heitmann Dienstag, 24. September 2013 09:12
- Als Antwort markiert Rene Keller Dienstag, 24. September 2013 13:10
-
Hallo M. Heitmann!
Soll ich meine Antwort jetzt auch als Antwort vorschlagen?
Da jeder von uns denkt, das er der einzige ist der recht hat, sollte man grundsätzlich nicht selbst seine Antworten als Antwort vorschlagen.
Wenn das jeder machen würde, dann würde das ganze System keine Sinn mehr machen.
Dies ist dazu gedacht, das ein dritter Forenteilnehmer eine Antwort vorschlägt.
Alles andere sieht ein bisschen selbstherrlich aus! ;-)
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Dienstag, 24. September 2013 09:10 fdvdsd
-
Hallo Peter,
danke für deinen Hinweis.
Wenn ich einen Beitrag sinnvoll finde, so makiere ich ihn auch als solches
und gebe auch meine Stimme für besonders hervorzugebende Antworten ab (z.B. dein Beitrag).Wenn das nicht so vorgesehen ist (wie z.B. bei wählen einer Antwort mit +1) dann sollte dies auch deaktiviert werden.
Ich kann dir auch gerne ein Beispiel geben wo sich moderatoren, die eine Antwort gegeben haben selbst als Antwort vorschlagen und die dann genehmigen.
http://social.technet.microsoft.com/Forums/de-DE/afd48b64-0bec-46f5-be8b-aa32b0629380/lync-anrufweiterleitung-per-snom-deaktivieren
Gerade ein Moderator sollte eine Vorbildfunktion darstellen.
Peter, wie siehst du das?
Gerne bin ich bereit meine vorgeschlagende Antwort zurückzunehmen und den Fragesteller darüber entscheiden zu lassen.
Beste Grüsse, M. Heitmann
MCSA: SQL Server 2012 -
Wenn das nicht so vorgesehen ist (wie z.B. bei wählen einer Antwort mit +1) dann sollte dies auch deaktiviert werden.
Da hast du recht! Microsoft sollte das so einrichten. Sieht aber trotzdem immer etwas selbstherrlich aus oder nicht?
Du kannst in diesem Microsoft TechNet Forum eine Vorschlag dafür machen / suchen.
Using Forums > Suggestions and Feedback for the Forums
http://social.technet.microsoft.com/Forums/de-DE/home?forum=suggest&filter=alllanguages
Ich kann dir auch gerne ein Beispiel geben wo sich moderatoren, die eine Antwort gegeben haben selbst als Antwort vorschlagen und die dann genehmigen.
http://social.technet.microsoft.com/Forums/de-DE/afd48b64-0bec-46f5-be8b-aa32b0629380/lync-anrufweiterleitung-per-snom-deaktivieren
Gerade ein Moderator sollte eine Vorbildfunktion darstellen.
Das sehe ich genauso! Ich habe mich zusammen mit anderen in dem Obigen Forum erfolgreich dafür eingesetzt, das man auch sieht wer denn was Markiert/vorgeschlagen hat. Damit so etwas überhaupt entdeckt werden kann. Auch dort beschweren sich viele über "unsaubere" Moderatoren.
Unser Moderator hier Denniver Reining sieht das genauso. Leider agieren die Mitarbeiter von Microsoft hier öfter "willkürlich" herum. Deshalb hat Denniver diesen Thread eingerichtet wo man "Ungerechtigkeiten" in diesem PowerShell Forum Melden kann:
(Re-) Moderationswünsche
Gerne bin ich bereit meine vorgeschlagende Antwort zurückzunehmen und den Fragesteller darüber entscheiden zu lassen.
Warum brauchst du dazu eine Aufforderung? ;-)
Ich hatte mich nur über den "unlauteren Wettbewerb" geärgert ;-)
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)