Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
Serafimko
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
#1

Backup hyper-v машин на удаленную машину - PowerShell

22.03.2017, 09:50. Просмотров 463. Ответов 8
Метки нет (Все метки)

Доброго времени суток!
с backup я смог разобраться с помощью библиотеки и производится он вот так например машины по имени centos

PowerShell
1
2
3
4
5
Stop-VM -VM centos -force
 
export-vm -vm centos -path C:\Users\Администратор.домен\Documents\hyperv\se -copystate -wait -force
 
Start-VM -VM centos -force
Отдельно команды выполняются после того как я их сохраняю в файле ps1. файл выпадает с ошибкой, а какой не успеваю прочитать.
после выполнения данного скрипта я хотел запускать приложение Rsync для отправки машины на удаленный сервер где хранятся я backup.
Я нашел приложение DeltaCopy которая имеет GUI но консольно запускает Rsync с параметрами.
вручную запуская DeltaCopy все работает отлично.
Но хотелось бы из скрипта Powershell после экспорта запускать Rsync дожидаться окончания выполнения отправки и удалять файлы экпорта.

PowerShell
1
2
3
4
5
$arg1="-A -v -rlt -z --chmod=a=rw,Da+x"
$arg2="192.168.1.31::bkp/hyperv/"
$arg3="/cygdrive/C/Users/Администратор.домен/Documents/hyperv/"
$file=C:\Program Files (x86)\deltacopy\rsync.exe
Start-Process -FilePath $file -argumentlist $arg1 $arg2 $arg3 -Wait
-Wait должен же позволить подождать исполнения Rsync и после его завершения вернет управление в Powershell?
сама строка выглядит так
PowerShell
1
rsync.exe  -v -rlt -z --chmod=a=rw,Da+x "192.168.1.31::bkp/hyperv/" "/cygdrive/C/Users/Администратор.домен/Documents/hyperv/"
Но столько параметров не передает и плюс они в скобках должны передаваться.
http://www.cyberforum.ru/powershell/thread2229927.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2017, 09:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Backup hyper-v машин на удаленную машину (PowerShell):

Перенос Hyper-V машин на один сервер
Всем привет, вопрос возник - планирую купить мощный сервер взамен двух...

Одна система на несколько виртуальных машин Hyper-V
Доброго дня. Возможно ли сделать одну установленную систему на несколько...

Hyper-v - как закрыть виртуальную машину?
итак, установила hyper-v server 2012. Комп перезагрузился, мне предложили...

scp на удаленную машину
Как скопировать файл на удаленную машину без запроса пароля? т.е. скрипт...

Пропала оснастка hyper-V и связь с доменом (Диспетчер Hyper-V)
Добрый день! нуждаюсь в вашей помощи, столкнулся со след. проблемой: (небольшая...

8
skouzmine
10 / 10 / 7
Регистрация: 27.02.2016
Сообщений: 50
02.04.2017, 21:30 #2
попробуйте "legacy way":


PowerShell
1
2
3
4
5
6
$arg1="-A -v -rlt -z --chmod=a=rw,Da+x"
$arg2="192.168.1.31::bkp/hyperv/"
$arg3="/cygdrive/C/Users/Администратор.домен/Documents/hyperv/"
$file= 'C:\Program Files (x86)\deltacopy\rsync.exe'
 
$res = invoke-expression -command "cmd %%- /c start /wait `"${file}`" $arg1 $arg2 $arg3"
0
Serafimko
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
05.04.2017, 12:17  [ТС] #3
не работает.
повершелл выдает ошибку "-A не найдена"
0
skouzmine
10 / 10 / 7
Регистрация: 27.02.2016
Сообщений: 50
05.04.2017, 21:00 #4
сделайте write-output прежде чем запускать -

PowerShell
1
2
3
4
5
6
7
8
9
10
$arg1="-A -v -rlt -z --chmod=a=rw,Da+x"
$arg2="192.168.1.31::bkp/hyperv/"
$arg3="/cygdrive/C/Users/?????????????.?????/Documents/hyperv/"
$file= 'C:\Program Files (x86)\deltacopy\rsync.exe'
$command = "`"${file}`" $arg1 $arg2 $arg3 "
write-output $command
write-output $command | out-file "$env:temp\a.cmd" -encoding ascii
$res = invoke-expression -command "cmd %%- /c $env:temp\a.cmd 1> $env:temp\a.log 2> $env:temp\a.err"
type "$env:temp\a.log"
type "$env:temp\a.err"
0
dirigar
10 / 10 / 1
Регистрация: 05.07.2015
Сообщений: 33
06.04.2017, 15:51 #5
Лучший ответ Сообщение было отмечено vavun как решение

Решение

В поше для exe-шников параметры передаются не строкой а массивом строк
например
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
######### 1 вариант. самый общий.
 
start -FilePath cmd.exe -ArgumentList @("/c", "dir", "/b", "e:")
 
######## тоже самое
 
&"cmd.exe" @("/c", "dir", "/b", "e:", "2>&1") | ConvertTo-Encoding -From cp866 -to windows-1251
if (-not $? -or $LASTEXITCODE -ne 0) {
    Write-Error "Errore...."
}
 
### для rsync
 
 
$out = "e:\out.out"
$err = "e:\err.out"
 
Start-Process -FilePath "E:\DeltaCopy\rsync.exe" -WorkingDirectory "E:\DeltaCopy" -ArgumentList @(
    "-A",
    "-v",
    "-rlt",
    "-z",
    "--chmod=a=rw,Da+x",
    #"--delete",
    """/cygdrive/C/Users/Администратор.домен/Documents/hyperv/""",
    """192.168.1.31::bkp/hyperv/"""
 
) -RedirectStandardError $err -RedirectStandardOutput $out
 
gc $out -Encoding UTF8
 
gc $err -Encoding UTF8
1
skouzmine
10 / 10 / 7
Регистрация: 27.02.2016
Сообщений: 50
08.04.2017, 07:31 #6
yep - дефолтный $OFS = ' ' - спасибо
1
Serafimko
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
11.04.2017, 07:05  [ТС] #7
Цитата Сообщение от dirigar Посмотреть сообщение
В поше для exe-шников параметры передаются не строкой а массивом строк
например
PowerShellВыделить код
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
### для rsync
$out = "e:\out.out"
$err = "e:\err.out"
Start-Process -FilePath "E:\DeltaCopy\rsync.exe" -WorkingDirectory "E:\DeltaCopy" -ArgumentList @(
* * "-A",
* * "-v",
* * "-rlt",
* * "-z",
* * "--chmod=a=rw,Da+x",
* * #"--delete",
* * """/cygdrive/C/Users/Администратор.домен/Documents/hyperv/""",
* * """192.168.1.31::bkp/hyperv/"""
) -RedirectStandardError $err -RedirectStandardOutput $out
gc $out -Encoding UTF8
gc $err -Encoding UTF8
Спасибо ваш способ сработал!

Добавлено через 21 час 58 минут

столкнулся с новой (старой)проблемой библиотеки от макйрософта для управления hyper-v в 2008r2 она отдельная и ее надо установить.
https://pshyperv.codeplex.com/
вроде ничего сложного нажать install.bat и все.
Но не тут-то было, после установки открывается powershell в котором команды для управления hyper-v работают. но в других экземплярах PowerSechll эти команды не работают.
Подскажите пожалуйста как правильно устанавливать этот модуль, что я делаю не так?
0
dirigar
10 / 10 / 1
Регистрация: 05.07.2015
Сообщений: 33
11.04.2017, 11:33 #8
Цитата Сообщение от Serafimko Посмотреть сообщение
но в других экземплярах PowerSechll эти команды не работают.
выполнить загрузку модуля
PowerShell
1
2
3
Import-Module 'C:\Program Files\modules\HyperV'
# или если в $env:psmodulepath есть C:\Program Files\modules\
Import-Module 'HyperV'
1
Serafimko
0 / 0 / 0
Регистрация: 15.05.2012
Сообщений: 7
11.04.2017, 13:31  [ТС] #9
Я как понял теперь каждый раз надо прописывать в начале каждого скрипта:
PowerShell
1
Import-Module 'HyperV'
А так все работает спасибо огромное!
0
11.04.2017, 13:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2017, 13:31
Привет! Вот еще темы с решениями:

Вывести на экран список машин, отсортированный по марками определить дату продажи наибольшего числа машин
Решите задачу в делфи, я делал её в паскале интересно как будет в делфи. ...

При подключении к Hyper-V 2008 получаю ошибку "Эта версия диспетчера Hyper-V не может использоваться ..."
Добрый день. При попытке подключения к серверу Hyper-V 2008 через Диспетчер...

У машин и велосипедов вместе N колес. Сколько может быть машин и велосипедов? (вывести все возможные сочетания)
У машин и велосипедов вместе N колес. Сколько может быть машин и велосипедов?...

"Exiland Backup" – ошибка перезаписи файла backup
Доброе время суток, Раньше пользовался программой «TurboBackup 9», он умел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru