活用PowerShell命令 高效管理Hyper-V

當多數的應用系統都轉移至虛擬化架構時,組織對於IT的營運必須懂得徹底善用虛擬化技術所帶來資源分配效益。為此,系統管理者須開始學習PowerShell Cmdlet的使用,讓許多例行性與常用的管理任務能夠藉由命令與Script搭配執行,達到高效率的批次操作與自動化運行。

建立虛擬機器備份與計畫

關於Hyper-V虛擬機器的備份方式,過去曾經介紹過使用Windows Server 2016內建的Windows Server Backup,或是自家的System Center Data Protection Manager(DPM),以及搭配第三方的備份方案來加以解決。如今要再介紹第四種純PowerShell命令的做法,包括備份計畫的執行,全都以命令參數來完成設定。

首先,在Hyper-V本機的「C:\ Scripts」路徑下準備一個名為「BackupVMs.ps1」的腳本程式,並且透過如圖6所示的Windows PowerShell ISE編輯器來開啟。


▲圖6 執行虛擬機器匯出。

以下是原始程式碼與摘要說明,其中主要備份虛擬機器的方法,便是透過Export-VM的命令參數來完成本機中所有虛擬機器的匯出:

# 設定備份資料夾變數
$Backup = "C:\Backup"
# 取得現行虛擬機器名稱清單
$VMs = Get-VM | Select name
 
# 先刪除現行的備份資料夾後再建立
if((Test-Path -Path $Backup)){
    Remove-Item $Backup -force -recurse
-erroraction:SilentlyContinue
} else {
    New-Item $Backup -type directory
}
# 匯出所有虛擬機器至備份資料夾內
foreach ($VM in $VMs)
{ 
    Export-VM -Name $VM.Name -Path $Backup
}
必須注意的是,由於此程式僅是一個極簡易的備份方法,因此每次的執行都會先行刪除舊備份資料夾與檔案。

一旦成功執行BackupVMs.ps1腳本程式,就可以在自訂的備份資料夾中,查看到所有完成匯出的虛擬機器資料夾。

若再進一步開啟任一虛擬機器資料夾,應該還會看到Snapshots、Virtual Hard Disks、Virtual Machines這三個用以存放不同虛擬機器檔案的子資料夾。

為了讓上一步驟中所建立的虛擬機器備份程式,能夠定時在每天選定的時間來自動執行,還必須建立一個備份計畫任務。

如圖7所示,先建立一個任務觸發變數,該變數主要是用以設定任務觸發計畫為每間隔兩週的星期六凌晨1:00:


▲圖7 設定執行匯出排程。
$JobTrigger = New-JobTrigger -Weekly 
-DaysOfWeek Saturday -WeeksInterval 2 -At
1:00AM
緊接著,還必須建立一個變數來設定以管理員的權限執行:
$RunAsAdmin = New-ScheduledJobOption
-RunElevated
最後,透過以下命令參數來引用前面所建立的兩大變數,便可以完成備份任務計畫的建立作業:
Register-ScheduledJob -Name "VMs Backup" 
-FilePath C:\Scripts\BackupVMs.ps1 -Trigger
$JobTrigger -ScheduledJobOption $RunAsAdmin
成功建立備份任務計畫後,在所選定的計畫時間,確認是否有如期匯出相關的虛擬機器檔案於「C:\Backup」路徑下。

針對任務的手動執行與追蹤,建議採用如圖8所示的命令參數範例來進行。可以先執行「Start-Job -ScriptBlock {C:\Scripts\BackupVMs.ps1}」命令來完成前面自訂的備份腳本程式之執行,過程中可執行「Get-Job -Id 5」命令來查詢最新狀態。


▲圖8 手動管理任務。

若要臨時中止執行該任務,使用「Stop-Job -Id 5」命令即可。必須注意的是,在這些命令中所引用的-Id參數值,必須正確輸入當下任務的相對Id編號。

未來若想取消所建立的備份任務計畫,可以考慮使用「Unregister-ScheduledJob」命令。如果想需要修改任務計畫的時間,則執行「Set-JobTrigger」命令。

如何還原虛擬機器的備份

虛擬機器的匯入功能如同虛擬機器的匯出,可以選擇透過「Hyper-V管理員」介面或PowerShell命令來完成,並且能夠選擇還原至本機或是遠端的Hyper-V主機之中。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!