Windows 10 使用 Hyper-V 一樣可以自動備份

最近在 Windows 10 上面使用 Hyper-V 想說要來備份 VM 才發現原來以前可以自動備份 Hyper-V 的是 Windows Server,如果不是 Windows Server 並沒有自動備份的功能,不過我就想這部分應該有現成的腳本可以做吧!果不其然讓我找到有一個叫做 Hyper-V-Backup 的 PowerShell 可以做到簡單備份 VM,剩下就只要再把它放入每日排程就可以完成這件事情了!

安裝 Hyper-V-Backup

它的安裝方法其實很簡單,只要打開 PowerShell 使用系統管理員執行輸入安裝指令,而安裝過程就是全部同意就結束了!

Install-Script -Name Hyper-V-Backup

在第一次執行指令的時候會出現 “因為這個系統上已停用指令碼執行,所以無法載入” 的保護機制,解決方法可以查看我之前寫的WINDOWS 安裝 CDK TOOLKIT 後出現 “因為這個系統上已停用指令碼執行,所以無法載入”,使用裡面的解法就可以讓指令正常執行了!

執行自動備份指令

安裝成功後就可以執行腳本了,腳本有提供備份成功會自動寄信的功能,不過因為我不需要使用,所以就沒有填寫了。

無自動發送郵件的指令範例

以下指令代表:

  • 備份位置:D:\Backups
  • 備份前暫存位置: C:\temp
  • 備份保留天數:30
  • 壓縮功能:開啟
  • 備份 Log 位置:D:\scripts\logs
Hyper-V-Backup.ps1 -BackupTo D:\Backups -Wd C:\temp -Keep 30 -Compress -Sz -SzOptions '-t7z,-ppassword' -L D:\scripts\logs 

自動發送郵件的指令範例

如果想要讓它自動寄信可以使用以下指令

Hyper-V-Backup.ps1 -BackupTo \\server\vm-backup -Wd C:\temp -Keep 30 -Compress -Sz -SzOptions '-t7z,-ppassword' -L D:\scripts\logs -Subject 'Server: Hyper-V Backup' -SendTo [email protected] -From [email protected] -Smtp smtp.outlook.com -User [email protected] -Pwd D:\scripts\ps-script-pwd.txt -UseSsl

而自動發送信件需要建立密碼檔,產生密碼檔得指令為以下

$creds = Get-Credential
$creds.Password | ConvertFrom-SecureString | Set-Content D:\scripts\ps-script-pwd.txt

備份成功檔案包含

備份成功後可以看到會產生壓縮檔,裡面包涵 Snapshots, Virtual Hard Disks, Virtual Machines,提供給需要還原 VM 的時候使用。

實現每日自動備份

有了方便的備份指令後,剩下就是把它加入每日排程就可以實現每日自動備份了!

程式或指令碼填入

powershell

新增引述填入

-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command "& 'C:\Program Files\WindowsPowerShell\Scripts\Hyper-V-Backup.ps1' -BackupTo D:\Backups -Wd C:\temp -Keep 90 -Compress -Sz -L D:\scripts\logs "

參考資料

  • https://gal.vin/utils/hyperv-backup-utility/