PDA

Показать полную графическую версию : [решено] установки паузы в powershell


Ubiquiti
22-07-2015, 09:15
Добрый день!!! после выгрузки 1с базы архив должен за архивироваться (за паролиться) и с копироваться на ftp и в облако. облако и ftp реализовано в коде. Не могу решить одну проблему при выгрузки базу запускается и архивирование как поставить скрипт на паузу пока не выполниться внешнее задание по выгрузке 1с базы, а только потом архивирование.

Мой вариант создать цинк и в нем отслеживать процесс выгрузки 1с как только процесс завершит работу передать работу 7z. Скрипт пишется мож есть какой вариант по проще. Ping не подходит потому, что не известно сколько база выгружаться.

#скрипт резервного копирование базы 1с8 сетевой или файловой
#блок выгрзки базы 1с
$S1с = Get-Date -UFormat "%d_%m_%Y_%H-%M"
$BackupBase1с = '/DumpIB E:\temp\ZUP_' +$S1с+ '.dt'
$Log1с = "/Out E:\temp\log\ZUP_Log_$S.log", '-NoT_runcate'
$1c8 = "C:\Program Files (x86)\1cv82\common\1cestart.exe"
$Paramters1с = 'DESIGNER', '/S','1с8\zarpnew', '/N', 'backup', '/P', '000000', '/DisableStartupMessages'
&$1c8 $Paramters1с $Log1с $BackupBase1с

#блок архивации выгрузки
$7z = "C:\Program Files\7-Zip\7z.exe"
$Paramters7z = 'a', '-tzip', '-p 000000'
$in7z = "E:\temp\*.dt", '-ssw'
$out7z = 'E:\temp\zup_' +$S+ '.zip'
&$7z $Paramters7z $out7z $in7z
#удаляем dt файлы
Remove-Item E:\temp\*.dt

Kazun
22-07-2015, 09:47
Start-Process $1c8 -Wait -ArgumentList $Paramters1с,$Log1с,$BackupBase1с

Ubiquiti
22-07-2015, 10:12
если так запустить то ps будет ждать пока 1с8 не отработает

Есть ошибка если оставить как есть то PS выдает ошибку типа -ArgumentList $Paramters1с,$Log1с,$BackupBase1с надо из объекта переделать в строку сделал вот так -ArgumentList "$Paramters1с","$Log1с","$BackupBase1с" все работе, также как и с &$1c8 $Paramters1с $Log1с $BackupBase1с запускает сразу и архиватор не ждет пока не отработает 1с8

Kazun
22-07-2015, 11:08
Если 1cestart.exe создает дочерний процесс, то после &$1c8.. добавить:
Start-Sleep -Sec 5
Wait-Process -Name 1cestart,имя процесса

Ubiquiti
22-07-2015, 16:23
Пока вопрос решил задержкой по времени, но это плохо буду думать как сделать задержку скрипта пока выполняется внешняя задача

Iska
22-07-2015, 19:23
Ubiquiti, Вам же написал коллега Kazun выше, как именно сие делать. Что не так?

Ubiquiti
23-07-2015, 16:35
Iska вопрос решился
у меня в переменной путь такой $1c8 = "C:\Program Files (x86)\1cv82\common\1cestart.exe"
а надо $1c8 = "C:\Program Files (x86)\1cv82\8.2.19.83\bin\1cv8.exe"

поэтому у меня и не работало проблема решена




© OSzone.net 2001-2012