हाइपर-वी क्लूसर को प्रबंधित करने के लिए पॉवरशेल का उपयोग कैसे करें


12

मेरे पास सर्वर 2016 डाटासेंटर के साथ 2 मेजबान हैं

प्रत्येक होस्ट पर मेरे पास 2 वीएम का वर्तमान में देव साझा भंडारण का उपयोग कर रहा है

मैं सभी क्लस्टर चीजें कर सकता हूं। यानी, लाइव माइग्रेट, मूव स्टोरेज,

मैं एक स्क्रिप्ट के लिए एक ही समय में क्लस्टर में सभी vm को बचाने में सक्षम होने के लिए पूरे Google को देख रहा हूं।

अगर मैं इसे चलाता हूं:

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

यह vm को बचाएगा, लेकिन यह वीएम के नामों के लिए प्रत्येक मेजबान के लिए दो बार मुझे संकेत देगा।

मेरा पूरा लक्ष्य एक पीसी से सभी वीएम को क्लस्टर में पुन: कॉन्फ़िगर करने में सक्षम होना है, वीएम की चाल बहुत अधिक है, इसलिए वे हमेशा एक ही मेजबान पर नहीं होते हैं।

उदाहरण:

सभी vm की सेव करें

साझा संग्रहण को बंद करें ओएस:

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 की शुरुआत करें

अगर मैं व्यक्तिगत रूप से प्रत्येक होस्ट में लॉग इन करता हूं, तो कमांड ठीक चलेगी, हालांकि मेरे उत्पादन में मेरे पास 100 वीएम के साथ 7 होस्ट हैं।

जवाबों:


8

यदि आप PowerShell से पूरे क्लस्टर को संबोधित करना चाहते हैं, तो सबसे अच्छा समाधान शायद सिस्टम सेंटर वर्चुअल मशीन मैनेजर में PowerShell मॉड्यूल है। इसे इसके लिए बनाया गया था।

PowerShell मॉड्यूल जो आप उपयोग कर रहे हैं, सिंगल-होस्ट स्क्रिप्टिंग के लिए अभिप्रेत था। यह अभी भी काम करने के लिए बनाया जा सकता है। आप ऊपर अपने कोड का पुनर्गठन कर सकते हैं। उदाहरण के तौर पे:

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

जेक आप मुझे समझा सकते हैं कि कैसे '$ AllVMsInCluster | Save-VM -Confirm: $ false 'प्रत्येक वीएम के माध्यम से लूप कर रहा है, मैं अपने कार्य का दूसरा भाग,' $ AllVMsInCluster 'प्राप्त करने की कोशिश कर रहा हूं। सेट-वीएम -SnapshotFileLocation C: \ ClusterStorage \ Volume1 \ 'लेकिन मैं यह पता नहीं लगा सकता कि निर्देशिका को अंत में कैसे सेट किया जाए, अर्थात। 'C: \ ClusterStorage \ Volume1 \ VM1', 'C: \ ClusterStorage \ Volume1 \ VM2'
एन्थोनी फोरनिटो सेप

आपको PowerShell पर एक पुस्तक पढ़ने की आवश्यकता है। मूलभूत अवधारणा "पाइपलाइन" है, और वस्तुएं इसके माध्यम से बहती हैं। एक "cmdlet" प्रत्येक ऑब्जेक्ट पर कार्य करता है जो पाइप लाइन पर इसे पास करता है। यदि आप व्यवहार को अलग-अलग करना चाहते हैं, तो चीजें संभवत: आप एक निर्माण चाहते हैं: $ AllVMsInCluster | Foreach-Object {Set-VM -SnapshotFileLocation C: \ ClusterStorage \ Volume1 \ $ _। नाम}
जेक ओशिन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.