Hyper-v Cluser'ı yönetmek için powershell nasıl kullanılır


12

Her ikisi de Server 2016 Datacenter ile 2 ana bilgisayarım var

Her ana bilgisayarda şu anda Paylaşılan depolama birimini kullanan 2 VM var

Tüm küme şeylerini yapabilirim., Canlı taşıma, depolama alanı taşıma,

Aynı anda kümedeki tüm vm kaydetmek için bir komut dosyası için tüm google arıyordum.

Bunu çalıştırırsam:

$clusterNodes = Get-ClusterNode;
$Name = ForEach($item in $clusterNodes){Get-VM -ComputerName $item.Name; }
{save-VM -ComputerName $item.Name; }

Vm'leri kurtaracak, ancak her ana bilgisayar için bir kez VM'nin isimlerini iki kez soracaktır.

Her şeyden önce, kümedeki tüm VM'leri tek bir bilgisayardan yeniden yapılandırabilir, ayrıca vm çok hareket eder, böylece her zaman aynı ana bilgisayarda olmazlar.

Misal:

Tüm vm'leri kaydet

Paylaşılan depolama biriminden çıkarın:

Set-VM pv02 -SnapshotFileLocation C:\ClusterStorage\Volume1\pv02
Set-VM pv02 -SmartPagingFilePath C:\ClusterStorage\Volume1\pv02
Set-VMHardDiskDrive -VMName  pv02 -ControllerType SCSI -Path C:\ClusterStorage\Volume1\pv02\pv02.vhdx

VM'leri başlatın

Her ana makineye ayrı ayrı giriş yaparsam komut iyi çalışır, ancak üretimimde yaklaşık 100 VM'ye sahip 7 ana bilgisayarım var.

Yanıtlar:


8

Kümenin tamamını PowerShell'den ele almak istiyorsanız, en iyi çözüm muhtemelen System Center Sanal Makine Yöneticisi'ndeki PowerShell modülüdür. Bunun için inşa edildi.

Kullandığınız PowerShell modülü, tek ana makineli komut dosyaları için tasarlanmıştır. Yine de işe yarayabilir. Yukarıdaki kodunuzu yeniden yapılandırabilirsiniz. Örnek olarak:

$clusterNodeNames = (Get-ClusterNode -Cluster ClusterName).Name
$AllVMsInCluster = Get-VM -ComputerName $clusterNodeNames
$AllVMsInCluster | Save-VM -Confirm:$false

Jake bana '$ AllVMsInCluster | Save-VM -Confirm: $ false 'her VM üzerinden döngü, görevimin ikinci kısmı,' $ AllVMsInCluster | Set-VM -SnapshotFileLocation C: \ ClusterStorage \ Volume1 \ 'ama sonunda Dizini nasıl ayarlayacağımı anlayamıyorum, yani. 'C: \ ClusterStorage \ Volume1 \ VM1', 'C: \ ClusterStorage \ Volume1 \ VM2'
Anthony Fornito 7:17

PowerShell ile ilgili bir kitap okumalısınız. Temel kavram "boru hattı" dır ve nesneler içinden akar. Bir "cmdlet", boru hattında kendisine geçen her nesneye etki eder. Davranışları işler geçtikçe değiştirmek isterseniz, muhtemelen şöyle bir yapı istersiniz: $ AllVMsInCluster | Foreach-Object {Set-VM -SnapshotFileLocation C: \ ClusterStorage \ Volume1 \ $ _. Ad}
Jake Oshins,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.