none
не работает бэкап

    Вопрос

  • Привет всем, делаю бэкап баз 1С средствами powershell, дело в том что до определенного момента времени все работало как часы, но недавно я решил проверить почему бэкапы делаются не полными, то есть иногда он полностью делает бэкап и папка архива весит 11 гб, а иногда он делает бэкап и папка весит допустим не больше на пару сотен мб а меньше, допустим 8 гб, никто не знает в чем может быть причина, выдает ошибки, на языке инопланетян))


    7z.exe : 
    строка:7 знак:2
    +     & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r  ...
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
     
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CD
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CD.cfl
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CL
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CL.cfl
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8JobScheduler\exec.lck
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8JobScheduler\exec.lck.cfl
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8Log\1Cv8.lgf
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8Log\20131213000000.lgp
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CD
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CD.cfl
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CL
    WARNING: Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CL.cfl

    Files read from disk: 240
    Archive size: 52427756 bytes (50 MiB)

    WARNINGS for files:

    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CD : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CD.cfl : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CL : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8.1CL.cfl : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8JobScheduler\exec.lck : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8JobScheduler\exec.lck.cfl : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8Log\1Cv8.lgf : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8Log\20131213000000.lgp : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CD : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CD.cfl : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CL : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    C:\1C_Bases\’Ґбв\Buh_Krikunov(ЋЎг祭ЁҐ)\1Cv8tmp.1CL.cfl : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.
    ----------------
    WARNING: Cannot open 12 files



    PS C:\Windows\system32> 

Ответы

  • Привет,как примерно написать проверку на убитый процесс, то есть если процесс убит, тогда бэкап делается, если нет, попытаться убить его снова. Есть код, который делает бэкап, необходима проверка, пока как написать не пойму.

    function backup {
    $srcPath = "C:\1C_Bases\Тест\*"
    $dstPath = "D:\1C_Archive\"
    $dstName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
    & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r -x!*Infrastrucutre -x!Тест
    }

    #stop-service W3SVC
    start-job -name "1cterminate" -scriptblock {
    $process = "1cv8c.exe"

    while ($true){
    <#Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Рогожский Вал"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Элбиус"} | foreach {$_.Terminate()}#>
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "!БУХ Обучение"} | foreach {$_.Terminate()} 
    Start-Sleep -s 2
    }
    }
    Start-Sleep -s 45
    backup
    get-job "1cterminate" | stop-job
    get-job "1cterminate" | remove-job -force
    backup | Out-File C:\1C_Bases\.Infrastrucutre\Utilities\Archive.log   -Append -NoClobber
    #start-service W3SVC

    function backup {
        $srcPath = "C:\1C_Bases\Тест\*"
        $dstPath = "D:\1C_Archive\"
        $dstName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
        & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r -x!*Infrastrucutre -x!Тест
    }
    
    #stop-service W3SVC
    
    $process_name = "1cv8c.exe"
    $LogFile = "C:\1C_Bases\.Infrastrucutre\Utilities\Archive.log"
    $Bases = "!?(ЗУП|БУХ) (Квадра|КПБС|КПБС-СОФТ|Крикунов и Партнеры|Рогожский Вал|Элбиус|Обучение)"
    $Retry = 0
    do {
        "[$(Get-date -Format "u")] Termination : " | Tee-Object $LogFile -Append
        $processes = Get-WmiObject Win32_Process -Filter "name = '$process_name'" | where-object {$_.Commandline -match $Bases}
        ForEach ($process in $processes) {
            "$($process.Commandline)" | Tee-Object $LogFile -Append
            $process.Terminate()
        }
        If (($processes | Measure-Object).count -ge 1){
            Start-Sleep -s 10
        }
        $Retry++
    } Until ((($processes | Measure-Object).count -eq 0) -or ($Retry -gt 5))
    
    if (($processes | Measure-Object).count -eq 0){
        backup | Out-File $LogFile -Append -NoClobber -Encoding Default 
    } Else {
        "[$(Get-date -Format "u")] Backup was not started because not all 1C processes was stopped" | Tee-Object $LogFile -Append
        "Not stopped processes : " | Tee-Object $LogFile -Append
        ForEach ($process in $processes) {
            "$($process.Commandline)" | Tee-Object $LogFile -Append
        }
    }
    
    #start-service W3SVC


    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа Vector BCOModerator 21 мая 2019 г. 14:48
    • Помечено в качестве ответа Revalio 21 мая 2019 г. 15:10
    • Помечено в качестве ответа Vector BCOModerator 8 июня 2019 г. 9:49
    Модератор

Все ответы

  • День добрый

    : Џа®жҐбб ­Ґ ¬®¦Ґв Ї®«гзЁвм ¤®бвгЇ Є д ©«г, в Є Є Є нв®в д ©« § ­пв ¤агЈЁ¬ Їа®жҐбᮬ.

    : Процесс ме может получить доступ к ф йлу, т к к к этот ф йл з -ят другим процессом.



    Грамотная постановка вопроса - уже 50% решения.
    SCCM User Group Russia на FaceBook и в Telegram

  • Да знаю, вот код вы все поймете 
    function backup {
    $srcPath = "C:\1C_Bases\Тест\*"
    $dstPath = "D:\1C_Archive\"
    $dstName = "$(Get-Date -Format "yyyyMMdd(1)").zip"

    & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r -x!*Infrastrucutre -x!Тест
    }

    #stop-service W3SVC
    start-job -name "1cterminate" -scriptblock {
    $process = "1cv8c.exe"

    while ($true){
    <#Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Рогожский Вал"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Элбиус"} | foreach {$_.Terminate()}#>
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "!БУХ Обучение"} | foreach {$_.Terminate()}
    Start-Sleep -s 2
    }
    }

    backup

    get-job "1cterminate" | stop-job
    get-job "1cterminate" | remove-job -force
    backup | out-file C:\1C_Bases_Test\logfile.log -Append
    #start-service W3SVC
  • он завершает все с админскими правами, он почему то не хочет пускать джоб start-job -name "1cterminate" -scriptblock {

  • он завершает все с админскими правами, он почему то не хочет пускать джоб start-job -name "1cterminate" -scriptblock {

    во-первых он завершает не все а только то что откоментировано (1 базу)

    во-вторых вы создаете бесконечный цикл, по этому дальше ничего и не идет

    и третье, ошибки из первого комента судя по всему указывают на закомментированную базу которая не завершается

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


    The opinion expressed by me is not an official position of Microsoft

    Модератор
  • он завершает все с админскими правами, он почему то не хочет пускать джоб start-job -name "1cterminate" -scriptblock {

    во-первых он завершает не все а только то что откоментировано (1 базу)

    во-вторых вы создаете бесконечный цикл, по этому дальше ничего и не идет

    и третье, ошибки из первого комента судя по всему указывают на закомментированную базу которая не завершается

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


    The opinion expressed by me is not an official position of Microsoft

    ха, все не так, или не все...

    1 справедливо

    2 если что-то завершается то start-job таки отрабатывает

    3 справедливо + логика не правильна, так как вы не дожидаясь завершения процессов 1с начинаете создавать бекабы по этому и не удивительно, что часть файлов даже в тех процессах которые вы завершаете остаются заблокированы.

    пс. прям очень справедливо

    ппс. русскоязычные сервера архаизм создающий тонны проблем на ровном месте


    The opinion expressed by me is not an official position of Microsoft

    Модератор
  • Не подскажите как это исправить, на самом деле все работало, до какого то времени, причем отлично, а месяц назад стали архивироваться бэкапы неполные.
  • уберите джоб и комменты и я думаю что будет работать

    The opinion expressed by me is not an official position of Microsoft

    Модератор
  • я поставил перед бэкапом sleep 45 секунд и за эт овремя он успевает убить все и отрабатывает
  • а можно вопрос, как сделать проверку, проблема была в том, что сессия пользователя зависла, и процесс каким то чудом не убился, он остался висеть и соответственно база не заархивировалась, то есть как сделать проверку, что процесс убить а затем только делать бэкап
  • я поставил перед бэкапом sleep 45 секунд и за эт овремя он успевает убить все и отрабатывает
    а когда начнет неуспевать поставите слип в 15 минут?

    The opinion expressed by me is not an official position of Microsoft

    Модератор
  • он работает в 2 часа ночи, так что если понадобится поставлю и в 15 минут))
  • Привет,как примерно написать проверку на убитый процесс, то есть если процесс убит, тогда бэкап делается, если нет, попытаться убить его снова. Есть код, который делает бэкап, необходима проверка, пока как написать не пойму.

    function backup {
    $srcPath = "C:\1C_Bases\Тест\*"
    $dstPath = "D:\1C_Archive\"
    $dstName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
    & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r -x!*Infrastrucutre -x!Тест
    }

    #stop-service W3SVC
    start-job -name "1cterminate" -scriptblock {
    $process = "1cv8c.exe"

    while ($true){
    <#Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Рогожский Вал"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Элбиус"} | foreach {$_.Terminate()}#>
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "!БУХ Обучение"} | foreach {$_.Terminate()} 
    Start-Sleep -s 2
    }
    }
    Start-Sleep -s 45
    backup
    get-job "1cterminate" | stop-job
    get-job "1cterminate" | remove-job -force
    backup | Out-File C:\1C_Bases\.Infrastrucutre\Utilities\Archive.log   -Append -NoClobber
    #start-service W3SVC
  • Привет,как примерно написать проверку на убитый процесс, то есть если процесс убит, тогда бэкап делается, если нет, попытаться убить его снова. Есть код, который делает бэкап, необходима проверка, пока как написать не пойму.

    function backup {
    $srcPath = "C:\1C_Bases\Тест\*"
    $dstPath = "D:\1C_Archive\"
    $dstName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
    & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r -x!*Infrastrucutre -x!Тест
    }

    #stop-service W3SVC
    start-job -name "1cterminate" -scriptblock {
    $process = "1cv8c.exe"

    while ($true){
    <#Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ЗУП Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Квадра"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ КПБС-СОФТ"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Крикунов и Партнеры"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Рогожский Вал"} | foreach {$_.Terminate()}
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "БУХ Элбиус"} | foreach {$_.Terminate()}#>
    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "!БУХ Обучение"} | foreach {$_.Terminate()} 
    Start-Sleep -s 2
    }
    }
    Start-Sleep -s 45
    backup
    get-job "1cterminate" | stop-job
    get-job "1cterminate" | remove-job -force
    backup | Out-File C:\1C_Bases\.Infrastrucutre\Utilities\Archive.log   -Append -NoClobber
    #start-service W3SVC

    function backup {
        $srcPath = "C:\1C_Bases\Тест\*"
        $dstPath = "D:\1C_Archive\"
        $dstName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
        & "C:\Program Files\7-Zip\7z.exe" a $dstPath$dstName $srcPath -r -x!*Infrastrucutre -x!Тест
    }
    
    #stop-service W3SVC
    
    $process_name = "1cv8c.exe"
    $LogFile = "C:\1C_Bases\.Infrastrucutre\Utilities\Archive.log"
    $Bases = "!?(ЗУП|БУХ) (Квадра|КПБС|КПБС-СОФТ|Крикунов и Партнеры|Рогожский Вал|Элбиус|Обучение)"
    $Retry = 0
    do {
        "[$(Get-date -Format "u")] Termination : " | Tee-Object $LogFile -Append
        $processes = Get-WmiObject Win32_Process -Filter "name = '$process_name'" | where-object {$_.Commandline -match $Bases}
        ForEach ($process in $processes) {
            "$($process.Commandline)" | Tee-Object $LogFile -Append
            $process.Terminate()
        }
        If (($processes | Measure-Object).count -ge 1){
            Start-Sleep -s 10
        }
        $Retry++
    } Until ((($processes | Measure-Object).count -eq 0) -or ($Retry -gt 5))
    
    if (($processes | Measure-Object).count -eq 0){
        backup | Out-File $LogFile -Append -NoClobber -Encoding Default 
    } Else {
        "[$(Get-date -Format "u")] Backup was not started because not all 1C processes was stopped" | Tee-Object $LogFile -Append
        "Not stopped processes : " | Tee-Object $LogFile -Append
        ForEach ($process in $processes) {
            "$($process.Commandline)" | Tee-Object $LogFile -Append
        }
    }
    
    #start-service W3SVC


    The opinion expressed by me is not an official position of Microsoft

    • Предложено в качестве ответа Vector BCOModerator 21 мая 2019 г. 14:48
    • Помечено в качестве ответа Revalio 21 мая 2019 г. 15:10
    • Помечено в качестве ответа Vector BCOModerator 8 июня 2019 г. 9:49
    Модератор