ASP.NET - 使用Powershell 管理VMM cluster, VMM Server 或是 Hyper-V 的VM開關機作業

管理VM的開關機作業可以經由Powershell 指令進行自動化作業,我要提供的範例是透過ASP.NET 結合 Powershell 來管理VMM, Hyper-V上的 VM 開關機順序。

當需要開關機的VM很多,且有先後順序的需求時(例如: 安裝hotfix),這個範例就可以派上用場。

圖一, Hyper-V管理介面

 

PowerShell 指令

要達成VM開關機管理所需要的PowerShell有三個,列出VM、執行開機、執行關機,其餘的作業就可以交由ASP.NET 依據業務需求進行調整。

下列範例只需要修改highlight部分即可,其中包含VMM Cluster Name及VM名稱。

 # List VM in VMM Cluster
Get-ClusterGroup -Cluster ClusterName | ?{$_.GroupType -eq 'VirtualMachine'}
 
# Start VM
Get-ClusterGroup -Cluster ClusterName -name vmName | Get-ClusterResource | get-vm | Start-VM
 
# Stop VM
Get-ClusterGroup -Cluster ClusterName -name vmName | Get-ClusterResource | get-vm | Stop-VM -force

 

ASP.NET 範例

1. 專案中需要加入System.Management.Automation的參考。

圖二, 加入System.Management.Automation的參考

 

2. 先列出VMM cluster中的所有VM。

圖三, ASP.NET列出VM

 

3. 將需要開機或是關機的VM,移至開關機清單中,並設定其順序及間格時間後,設定完成後,就可以執行對應作業。

圖四, 設定開關機順序

 

Enjoy!