stankevsk: есть вариант скрипта, который может выполнять бекап на сетевой диск с примитивным логированием
(по привычке использую 2 файла -- cmd -- для создания расписания в таск шедуллере, и ps1 -- собаственно скрипт);
HyperVBackup.bat
----------------------------HyperVBackup.bat -----------start--------------------
powershell -ExecutionPolicy Unrestricted -file HyperVBackup.ps1
----------------------------HyperVBackup.bat ------------end--------------------
----------------------------HyperVBackup.ps1 -----------start--------------------
# Hyper-V VMs HVBackup script
# by Konstantin Kondratyuk
# kko@ciklum.com
# Get hostname
$Hostname = hostname
# Get current date
$Date = Get-Date -Format yyyyMMdd
# Get current time
$StartStopTime = Get-Date -Format "yyyyMMdd HH:mm_ss"
# Set logs location
$LogsPath = "C:\scripts\HyperVBackup\logs"
#Write name exported VMs
$ExportedVMs >> $OperationsLog
# Get current time
$StartStopTime = Get-Date -Format "yyyyMMdd HH:mm_ss"
#Write Stop message in Log-file
echo "Stop backup VM on $Hostname at $StartStopTime" >> $OperationsLog
# Variables cleanup
Remove-Variable -Name * -ErrorAction SilentlyContinue
----------------------------HyperVBackup.ps1 ------------end--------------------
--------------------------------------------------------------------------------------------------
Из особенностей
1. Если бакап по сети -- в настройках секьюрити надо дать разрешения для учётной записи ПК писать в эту шару (проверялся в доменной структуре, для рабочих групп не проверял)
2. Логи в текущей версии кладутся локально по пути
C:\scripts\HyperVBackup\logs
просто потому что необходимости отсылать на почту небыло. Для отсылки на почту понадобится дописать еще строчек 15 кода.
(по привычке использую 2 файла -- cmd -- для создания расписания в таск шедуллере, и ps1 -- собаственно скрипт);
HyperVBackup.bat
----------------------------HyperVBackup.bat -----------start--------------------
powershell -ExecutionPolicy Unrestricted -file HyperVBackup.ps1
----------------------------HyperVBackup.bat ------------end--------------------
----------------------------HyperVBackup.ps1 -----------start--------------------
# Hyper-V VMs HVBackup script
# by Konstantin Kondratyuk
# kko@ciklum.com
# Get hostname
$Hostname = hostname
# Get current date
$Date = Get-Date -Format yyyyMMdd
# Get current time
$StartStopTime = Get-Date -Format "yyyyMMdd HH:mm_ss"
# Set logs location
$LogsPath = "C:\scripts\HyperVBackup\logs"
# Set Operations Log
$OperationsLogName = "vms_HVBackup_operations_log_$Date.txt"
$OperationsLog = New-Item -ItemType File -Name $OperationsLogName -Path $LogsPath -Force
#Write Start message in Log-file
echo "Start backup VM on $Hostname at $StartStopTime" >> $OperationsLog
# Set backup path
$BackupPath = New-Item "\\[path to network share]\$Date" -ItemType directory -Force
# Select VMs
$VMs = Get-VM -ComputerName $Hostname
# Export selected VMs
Export-VM $VMs -Path $BackupPath
$ExportedVMs = $VMs | Select-Object Name | Out-String
#Write name exported VMs
$ExportedVMs >> $OperationsLog
# Get current time
$StartStopTime = Get-Date -Format "yyyyMMdd HH:mm_ss"
#Write Stop message in Log-file
echo "Stop backup VM on $Hostname at $StartStopTime" >> $OperationsLog
# Variables cleanup
Remove-Variable -Name * -ErrorAction SilentlyContinue
----------------------------HyperVBackup.ps1 ------------end--------------------
--------------------------------------------------------------------------------------------------
Из особенностей
1. Если бакап по сети -- в настройках секьюрити надо дать разрешения для учётной записи ПК писать в эту шару (проверялся в доменной структуре, для рабочих групп не проверял)
2. Логи в текущей версии кладутся локально по пути
C:\scripts\HyperVBackup\logs
просто потому что необходимости отсылать на почту небыло. Для отсылки на почту понадобится дописать еще строчек 15 кода.