############################# # # Backup Intranet # ############################# # Setting path for vboxmanage $Env:Path = "c:\Program Files\Oracle\VirtualBox\" # creating backup paths $remoteBackupPath = "\\freenas\programas\VM_Backup" $backupDriveLetterMount = "L" $backupFilename = $backupDriveLetterMount + ":\" + [string](Get-Date).Year + [string](Get-Date).Month + [string](Get-Date).Day + "_Intranet_Backup.ova" $vmName = "2018_intranet" # mounting backup path New-PSDrive -Name L -Root \\freenas\programas\VM_Backup\ -Persist -PSProvider FileSystem New-PSDrive -Name $backupDriveLetterMount -Root $remoteBackupPath -Persist -PSProvider FileSystem # stoping vm $vmanagerStopVM = "VBoxManage.exe" $vmanagerStopVM += @(" controlvm ") $vmanagerStopVM += @($vmName) $vmanagerStopVM += @(" poweroff") Write-host "$vmanagerStopVM" Invoke-Expression "$vmanagerStopVM" #backing up vm $vmanagerBackup = "VBoxManage.exe" $vmanagerBackup += @(" export ") $vmanagerBackup += @($vmName) $vmanagerBackup += @(" --ovf10") $vmanagerBackup += @(" -o ") $vmanagerBackup += @([string]$backupFilename) Write-host "$vmanagerBackup" Invoke-Expression "$vmanagerBackup" # start vm $vmanagerStart = "VBoxManage.exe" $vmanagerStart += @(" startvm ") $vmanagerStart += @($vmName) $vmanagerStart += @(" -type headless") Write-host "$vmanagerStart" Invoke-Expression "$vmanagerStart" # remove old Backups $backupFileCount = ( Get-ChildItem -Filter *.ova $remoteBackupPath | Measure-Object ).Count $backupPath = $backupDriveLetterMount + ":\" DO { $Item = Get-ChildItem -Path $remoteBackupPath -Filter *.ova | Sort CreationTime | select -First 1 Write-Host "Oldest file/folder in $FolderName is $($Item.FullName)" Remove-Item -Path $($Item.FullName) -Force $backupFileCount = ( Get-ChildItem -Filter *.ova $remoteBackupPath | Measure-Object ).Count } While ($backupFileCount -gt 3) # removing backup path Remove-PSDrive -Name $backupDriveLetterMount