hyper-v backup виртуальных машин

Настроим автоматическое сохранение копий наших виртуальных машин в папку расшареную на samba сервере.

Создадим скрипт на powershell и положим в c:\vmbackup.ps1

 

$source = "D:\backup\"

$destination = "D:\backup"

$curdate = (Get-Date).AddDays(-1).tostring("%d-%m-%y")

$vmname = @('proxy','cloudit','openfire')

Remove-Item "D:\backup\*" -Recurse

$ND = New-Object -ComObject WScript.Network

$ND.MapNetworkDrive('Z:', '\\192.168.21.12\sysbackup\vm-backup', $false, 'leash', 'Privet12')

New-Item -Path 'Z:\mashines\archive\' -Name $curdate -ItemType "directory"

Move-Item -Path Z:\mashines\*.zip -Destination

Z:\mashines\archive\$curdate

foreach ($item in $vmname){

Export-VM -Name $item -Path "D:\backup\"

& "C:\Program Files\7-Zip\7z.exe" a -tzip -ssw -mx1 -r0 $destination\"$item".zip $source$item

}

Copy-Item D:\backup\*.zip Z:\mashines\

Remove-Item "D:\backup\*" -Recurse -Force

forfiles -p Z:\mashines\archive\ -m * -d -3 -c "cmd /c rd /s /q @path"

$ND.RemoveNetworkDrive('Z:')

exit

Чтобы запускать наш скрипт из планировщика заданий создадим bat файл

C:/vm.cmd

start powershell -ExecutionPolicy Unrestricted -File "C:\vmbackup.ps1"

Теперь создадим правило в планировщике

schtasks /create /ru "LINUXBOX\username" /rp password /sc daily /tn "backup_ps" /tr c:\vm.cmd /st 05:45:00

Если надо удалить

schtasks /delete /tn "backup_ps"