WBADMINのみを使用して仮想マシンのバックアップを実行するスクリプトを設定しようとしています。新しい-HyperVスイッチを使用してすべてのVMをバックアップできるのと同じくらい魅力的ですが、HyperVもバックアップしたいと思います。ホストコンポーネント。誰かがこれを行った経験がありますか、またはいくつかのドキュメントを教えてくれますか(Microsoftのものはこの新しい-HyperVスイッチを無視しています)
興味があれば、これは私のPowerShellスクリプトです。
#Constant Variables
$Day = Get-Date
$Day = $Day.DayOfWeek
$Date = Get-Date -format hhmmddMMyyyy
$Server = hostname
#Set Paths
$BackupPath = "\\backup\Backups\" + $Server + "\" +$Day
$LogPath = "\\backup\Backups\" + $Server + "\Logs\" + $Date +".txt"
# SELECT Virtual Machines
$VMList = $null
$VMs = Get-VM | Select-Object VMId
for ($i = 0 ; $i -lt $VMs.length ; $i++) {
$VMList = $VMList + '"' + $VMs[$i].VMId + '"' +","
}
$VMList = $VMList.Substring(0,$VMList.Length - 1)
#Run Backup
WBADMIN START BACKUP -backupTarget:$BackupPath -hyperv:$VMList -Quiet
だから私は最終的に、WBADMINを捨てて、代わりにPowerShellでWBbackupCMDLETSの使用を開始する必要があることを理解しました。これを行う方法は次のとおりです。
#Constant Variables
$Day = Get-Date
#Use this for Backups in Evening
$Day = ($Day.AddDays(1)).DayOfWeek
#Use this for Backups in the Morning
#$Day = $Day.DayOfWeek
$Date = Get-Date -format hhmmddMMyyyy
$Server = hostname
$Target = '\\backup\backups\'+$Server+'\'+$Day
$VirtualMachines = Get-WBVirtualMachine
$DailyFullWB = New-WBPolicy
$BackupTarget = New-WBBackupTarget -NetworkPath $Target
Set-WBPolicy -Policy $DailyFullWB
Add-WBBackupTarget -Policy $DailyFullWB -Target $BackupTarget -Force
Add-WBVirtualMachine -Policy $DailyFullWB -VirtualMachine $VirtualMachines
Start-WBBackup -Policy $DailyFullWB -AllowDeleteOldBackups -Force
実際、解決策は信じがたいほど簡単であり、そうです、それはどこにも文書化されていません。実際には、VMlistに文字列「HostComponent」を含める必要があります(パラメータ--hyperv
)。
スペースが含まれているため、文字列を引用する必要があることを覚えておいてください。
例えば。そのように:
wbadmin start backup -backupTarget:$BackupPath -hyperv:"$VMList,Host Component" -quiet
少なくともWindowsServer 2016では、これは機能しました。