|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Унифицировать Скрипт копирования |
|
|
PowerShell - [решено] Унифицировать Скрипт копирования
|
Новый участник Сообщения: 24 |
Всем привет. Помогите Унифицировать скрипт копирования бекапов 1с.
- Скрипт копирует файлы бекапов баз 1с (.dt или .zip) на сетевую шару - Проверяет наличие скопированного файла на шаре - Отправляет письмо о недостующих (не случившихся) бекапах ------------------------------- Базы прибавляются слишком быстро, уже около 30. И просто неудобно каждый раз добавлять новую строку в скрипт. $date = (Get-Date -uformat "%d.%m.%Y") $a = $b = $c = $d = $e = $f = $g = $h = $i = $j = $k = $m = $n = $o = $p = $q = $r = $s = $t = $x = $v = $u = $buh<HIDE> = $zup<HIDE> = $alpha = 0 copy-item c:\BackUP_1C\Alpha_<HIDE>\BackupTmp.zip \\<HIDE>\backup\1c\Alpha\Alpha_<HIDE>_$date.zip copy-item c:\BackUP_1C\buh8\*.dt \\<HIDE>\backup\1c\buh8\Buh8_<HIDE>_$date.dt copy-item c:\BackUP_1C\buh82\*.dt \\<HIDE>\backup\1c\buh82\Buh82_<HIDE>_$date.dt copy-item c:\BackUP_1C\buhCKS8\BackupTmp.dt \\<HIDE>\backup\1c\buhCKS8\BuhCKS8_<HIDE>_$date.dt copy-item C:\BackUP_1C\BuhCKS82\*.dt \\<HIDE>\backup\1c\BuhCKS82\BuhCKS82_<HIDE>_$date.dt copy-item c:\BackUP_1C\crm\BackupTmp.dt \\<HIDE>\backup\1c\crm\CRM_<HIDE>_$date.dt copy-item c:\BackUP_1C\eco\*.dt \\<HIDE>\backup\1c\eco\ECO_<HIDE>_$date.dt copy-item c:\BackUP_1C\Kandidat\BackupTmp.dt \\<HIDE>\backup\1c\Kandidat\Kandidat_<HIDE>_$date.dt copy-item c:\BackUP_1C\kredit\BackupTmp.dt \\<HIDE>\backup\1c\kredit\Kredit_<HIDE>_$date.dt copy-item c:\BackUP_1C\orgteh\*.dt \\<HIDE>\backup\1c\orgteh\Orgteh_<HIDE>_$date.dt copy-item c:\BackUP_1C\SpecOdejda\BackupTmp.zip \\<HIDE>\backup\1c\SpecOdejda\SpecOdejda_<HIDE>_$date.zip copy-item c:\BackUP_1C\Strah\BackupTmp.zip \\<HIDE>\backup\1c\strah\Strah_<HIDE>_$date.zip copy-item c:\BackUP_1C\traktir\*.dt \\<HIDE>\backup\1c\traktir\Traktir_<HIDE>_$date.dt copy-item c:\BackUP_1C\ZikBuh\BackupTmp.zip \\<HIDE>\backup\1c\zikbuh7\ZikBuh7_<HIDE>_$date.zip copy-item C:\BackUP_1C\ZikCKS7\BackupTmp.zip \\<HIDE>\backup\1c\zikCKS7\ZikBuhCKS7_<HIDE>_$date.zip copy-item C:\BackUP_1C\zikeco\BackupTmp.dt \\<HIDE>\backup\1c\zikeco\ZikECO_<HIDE>_$date.dt copy-item C:\BackUP_1C\zik<HIDE>NM\BackupTmp.zip \\<HIDE>\backup\1c\zik<HIDE>NM\Zik<HIDE>NM_<HIDE>_$date.zip copy-item C:\BackUP_1C\Zik<HIDE>MY\BackupTmp.zip \\<HIDE>\backup\1c\Zik<HIDE>MY\Zik<HIDE>MY_<HIDE>_$date.zip copy-item C:\BackUP_1C\zik<HIDE>RA\BackupTmp.zip \\<HIDE>\backup\1c\zik<HIDE>RA\Zik<HIDE>RA_<HIDE>_$date.zip copy-item C:\BackUP_1C\ZupEco82\*.dt \\<HIDE>\backup\1c\ZupEco82\ZupEco82_<HIDE>_$date.dt copy-item C:\BackUP_1C\BuhAru82\*.dt \\<HIDE>\backup\1c\BuhAru82\BuhAru82_<HIDE>_$date.dt copy-item c:\BackUP_1C\ZikAru\BackupTmp.zip \\<HIDE>\backup\1c\ZikAru\ZikAru_<HIDE>_$date.zip copy-item C:\BackUP_1C\Buh<HIDE>\*.dt \\<HIDE>\backup\1c\Buh<HIDE>\Buh<HIDE>_<HIDE>_$date.dt copy-item C:\BackUP_1C\Zup<HIDE>\*.dt \\<HIDE>\backup\1c\Zup<HIDE>\Zup<HIDE>_<HIDE>_$date.dt copy-item C:\BackUP_1C\alpha5\*.dt \\<HIDE>\backup\1c\alpha5\Alpha5_<HIDE>_$date.dt if(!(Test-Path \\<HIDE>\backup\1c\alpha\Alpha_<HIDE>_$date.zip)){$a = "BackUP Alpha FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\buh8\Buh8_<HIDE>_$date.dt)){$b = "BackUP Buh8 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\buh82\Buh82_<HIDE>_$date.dt)){$c = "BackUP Buh82 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\buhCKS8\BuhCKS8_<HIDE>_$date.dt)){$d = "BackUP BuhCks8 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\BuhCKS82\BuhCKS82_<HIDE>_$date.dt)){$e = "BackUP BuhCks82 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\crm\CRM_<HIDE>_$date.dt)){$f = "BackUP CRM FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\eco\ECO_<HIDE>_$date.dt)){$g = "BackUP ECO FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\Kandidat\Kandidat_<HIDE>_$date.dt)){$h = "BackUP Kandidat FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\kredit\Kredit_<HIDE>_$date.dt)){$i = "BackUP Kredit FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\orgteh\Orgteh_<HIDE>_$date.dt)){$j = "BackUP Orgteh FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\SpecOdejda\SpecOdejda_<HIDE>_$date.zip)){$k = "BackUP SpecOdejda FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\strah\Strah_<HIDE>_$date.zip)){$m = "BackUP Strahovanie FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\traktir\Traktir_<HIDE>_$date.dt)){$n = "BackUP Traktir FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\zikbuh7\ZikBuh7_<HIDE>_$date.zip)){$o = "BackUP ZikBuh7 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\zikCKS7\ZikBuhCKS7_<HIDE>_$date.zip)){$p = "BackUP ZikBuhCKS7 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\zikeco\ZikECO_<HIDE>_$date.dt)){$q = "BackUP ZikECO FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\zik<HIDE>NM\Zik<HIDE>NM_<HIDE>_$date.zip)){$r = "BackUP Zik<HIDE>MN FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\Zik<HIDE>MY\Zik<HIDE>MY_<HIDE>_$date.zip)){$s = "BackUP Zik<HIDE>MY FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\zik<HIDE>RA\Zik<HIDE>RA_<HIDE>_$date.zip)){$t = "BackUP Zik<HIDE>RA FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\ZupEco82\ZupEco82_<HIDE>_$date.dt)){$x = "BackUP ZupEco82 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\BuhAru82\BuhAru82_<HIDE>_$date.dt)){$v = "BackUP BuhAru82 FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\ZikAru\ZikAru_<HIDE>_$date.zip)){$u = "BackUP ZikAru FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\Buh<HIDE>\Buh<HIDE>_<HIDE>_$date.dt)){$buh<HIDE> = "BackUP Buh<HIDE> FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\Zup<HIDE>\Zup<HIDE>_<HIDE>_$date.dt)){$zup<HIDE> = "BackUP zup<HIDE> FAIL"} if(!(Test-Path \\<HIDE>\backup\1c\Alpha5\Alpha5_<HIDE>_$date.dt)){$alpha = "BackUP alpha5 FAIL"} if($a -eq $b -eq $c -eq $d -eq $e -eq $f -eq $g -eq $h -eq $i -eq $j -eq $k -eq $m -eq $n -eq $o -eq $p -eq $q -eq $r -eq $s -eq $t -eq $x -eq $v -eq $u -eq $buh<HIDE> -eq $zup<HIDE> -eq $alpha -eq 0) { Write-host "ALL Backups done" Send-MailMessage -To "<HIDE>@ava-<HIDE>.ru" -Cc "<HIDE>@ava-<HIDE>.ru" -From "report@ava-<HIDE>.ru" -Subject "BackUp SUCCESS!!!" -Body "ALL backups 1c done" -SmtpServer <HIDE> } Else { Send-MailMessage -To "<HIDE>@ava-<HIDE>.ru" -From "report@ava-<HIDE>.ru" -Subject "BackUp FAIL!!!" -Body "$a $b $c $d $e $f $g $h $i $j $k $m $n $o $p $q $r $s $x $t $v $u $buh<HIDE> $zup<HIDE> $alpha" -SmtpServer <HIDE> } Была идея подключаться к серверам 1с и брать оттуда названия баз, подключаться к ним и бекапить. Но готового решения для работы с сервером 1с через powershell не нашел. |
|
Отправлено: 07:18, 27-02-2015 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $date = (Get-Date -uformat "%d.%m.%Y") $bad = @() $base = @{ "C:\BackUP_1C\Alpha_<HIDE>\BackupTmp.zip" = "\\<HIDE>\backup\1c\Alpha\Alpha_<HIDE>_$date.zip" "c:\BackUP_1C\buh8\*.dt" = "\\<HIDE>\backup\1c\buh8\Buh8_<HIDE>_$date.dt" } $base.GetEnumerator() | Foreach { $message = $_.Name + " - FAIL" try { Copy-Item $_.Name $_.Key -ErrorAction Stop if(!(Test-Path $_.Key)){ $bad += $message } } catch { $bad += $message } } $body = $bad | Out-String if(!$body) { Write-host "ALL Backups done" Send-MailMessage -To "<HIDE>@ava-<HIDE>.ru" -Cc "<HIDE>@ava-<HIDE>.ru" -From "report@ava-<HIDE>.ru" -Subject "BackUp SUCCESS!!!" -Body "ALL backups 1c done" -SmtpServer <HIDE> } Else { Send-MailMessage -To "<HIDE>@ava-<HIDE>.ru" -From "report@ava-<HIDE>.ru" -Subject "BackUp FAIL!!!" -Body $body -SmtpServer <HIDE> } |
Отправлено: 08:33, 27-02-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 24
|
Профиль | Сайт | Отправить PM | Цитировать Базы при этом, все равно прописывать?
Может посчитать папки в C:\BackUP_1C\* ? |
Отправлено: 08:55, 27-02-2015 | #3 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:00, 27-02-2015 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата red.army@vk:
|
||
Отправлено: 16:29, 27-02-2015 | #5 |
Новый участник Сообщения: 24
|
Профиль | Сайт | Отправить PM | Цитировать $date = (Get-Date -uformat "%d.%m.%Y") robocopy c:\BackUP_1C \\<HIDE>\backup\1c\ /s /e Get-ChildItem \\<HIDE>\Backup\1c | foreach { Write-Host $_.name Write-Host "\\<HIDE>\Backup\1c\$_\*$date*" Test-Path -Path "\\<HIDE>\Backup\1c\$_\*$date*" } Как при получении False сформировать массив имен папок для отправки на почту? Как сформировать массив разобрался $date = (Get-Date -uformat "%d.%m.%Y") #robocopy c:\BackUP_1C \\<HIDE>\backup\1c\ /s /e $bad = @() Get-ChildItem \\<HIDE>\Backup\1c | foreach { Write-Host $_.name Write-Host "\\<HIDE>\Backup\1c\$_\*$date*" $message = $_.name + " - FAIL" if(!(Test-Path -Path "\\<HIDE>\Backup\1c\$_\*$date*")){ $bad += $message } } $body = $bad | Out-String $body |
Последний раз редактировалось red.army@vk, 28-02-2015 в 13:19. Отправлено: 13:06, 28-02-2015 | #6 |
Новый участник Сообщения: 24
|
Профиль | Сайт | Отправить PM | Цитировать Iska - расскажите пжст подробней...
Конф. файл к чему? 1с или POSH |
Отправлено: 13:21, 28-02-2015 | #7 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Выполнить две команды и понять разницу, когда используются двойные кавычки(подробнее, как всегда в справке):
dir | Foreach {Write-Host "$_.Name"} и dir | Foreach {Write-Host "$($_.Name)"} Не пойму зачем добавлять Test-Path, когда robocopy имеет прекрасный лог файл, который на порядок лучше этих бесполезных проверок. |
Отправлено: 15:55, 28-02-2015 | #8 |
(*.*) Сообщения: 36561
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 16:40, 28-02-2015 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата red.army@vk:
Как обычно — данные отдельно, код отдельно. Вместо того, чтобы: Цитата red.army@vk:
|
||
Отправлено: 19:29, 28-02-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Скрипт копирования баз | Goodkid | Скриптовые языки администрирования Windows | 9 | 29-04-2013 17:14 | |
SH скрипт копирования каталога | ktotut | Программирование в *nix | 24 | 28-10-2012 20:50 | |
CMD/BAT - Скрипт копирования по сети | Forpost | Скриптовые языки администрирования Windows | 1 | 21-06-2010 17:06 | |
Разное - Скрипт резервного копирования | dividik | Microsoft Windows 2000/XP | 10 | 27-01-2009 12:45 | |
Помогите написать скрипт копирования | Filariel | Программирование в *nix | 7 | 17-11-2006 16:38 |
|