none
Powershell RRS feed

  • Вопрос

  • Помогите со скриптом,нужен скрипт,который будет завершать процессы по $process = "1cv8c.exe"
    И Get-WmiObject Win32_Process -Filter "name = '$process'" | Select-Object CommandLine | Where {$_ -match "ИБ"}
    Если возможно то циклом,поскольку баз будет штук 10 а то и больше.
    То есть может быть и Иб1 и ИБ2 и прочее.

    16 октября 2018 г. 15:06

Ответы

  • не совсем :)

    # эту функцию я выше уже правил, работать будет и так но параметры передать не сможете
    function BackUp([string]$CurentDat,[string]$Path,[string]$DestinationPath){
    $CurentDate = (Get-Date -Format "yyyyMMdd(1)").ToString() #Текущая дата
    $Path="C:\ТестПапка\"
    $DestinationPath="D:\1C_Archive\$CurentDate.zip"
    & "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    }
    
    # следующую строку вы не используете и можете удалить
    # $EndTime = $(Get-Date -Format "19:00:00").ToString()
    start-job -Name "1cupgrade" -scriptblock {
       $process = "1cv8c.exe"
       while ($true){
          Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
          Start-Sleep -s 2
       }
    }
    BackUp 
    get-job "1cupgrade" | stop-job -force 
    get-job "1cupgrade" | remove-job


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



    • Изменено Vector BCOModerator 18 октября 2018 г. 9:02
    • Помечено в качестве ответа KazunEditor 22 октября 2018 г. 7:34
    18 октября 2018 г. 9:01
    Модератор

Все ответы

  • Ну то есть надо найти этот процесс который равен названию базы и убить его.
    16 октября 2018 г. 15:16
  • то что вы написали не работает или в чем вопрос?

    Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ИБ"} | foreach {$_.Terminate()}


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


    16 октября 2018 г. 15:51
    Модератор
  • Цикл не нужен, попробуйте вот так:

    Get-Process | ? {$_.ProcessName -match "1cBase1"} | Stop-Process
    # Или так
    Get-Process | ? {$_.ProcessName -like "1cBase*"} | Stop-Process

    16 октября 2018 г. 21:09
  • Цикл не нужен, попробуйте вот так:

    Get-Process | ? {$_.ProcessName -match "1cBase1"} | Stop-Process
    # Или так
    Get-Process | ? {$_.ProcessName -like "1cBase*"} | Stop-Process

    Насколько я понял загвоздка не в Processname a в Commandline, который не доступен через Get-Process (если я ничего не путаю)

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


    16 октября 2018 г. 22:21
    Модератор
  • Почему же работает,толкьо заходя снова,пользователь снова запускает процесс и тем самым мешает обновлению.
    17 октября 2018 г. 7:37
  • Хочется сделать так,что бы он не смог заходить,так скажем зациклить выбивание процесса на определенное время так скажем 
    17 октября 2018 г. 7:40
  • Вы сервер обновляете или клиентов?

    $EndTime = $(get-date 2018.10.17 18:26:00)
    while ($true){
       Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ИБ"} | foreach {$_.Terminate()}
       Start-Sleep -s 10
       if ($(Get-Date) -gt $EndTime) {break}
    }



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


    17 октября 2018 г. 8:29
    Модератор
  • обновляю базы на сервере 

    17 октября 2018 г. 8:32
  • обновляю базы на сервере 

    попробуйте потестировать вариант выше. Если баз несколько то их можно в regex перечислить в конструкции -match '(ИБ|ДС|ФинДир|Дир)'

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

    17 октября 2018 г. 9:12
    Модератор
  • На самом деле код выше помог мне в решении,спасибо
    17 октября 2018 г. 10:14
  • На самом деле код выше помог мне в решении,спасибо
    отметьте пожалуйста сообщения которые помогли в решении вашего вопроса через Голосование под серым квадратиком слева от комментария и/или нажав Пометить как ответ под комментарием - это поможет будущим посетитетям форума с подобной задачей быстрее найти ответ 

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

    17 октября 2018 г. 11:00
    Модератор
  • Сделал и еще раз спасибо.
    17 октября 2018 г. 12:53
  • можно ли еще вопрос,как сделать так,что бы ваш скрипт и мой продолжали действовать во время отладки

    Мой скрипт это просто последовательность действий для архивации папок.

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

    То бишь он архивирует а ваш код остается в бездействие до окончания архивирования.

    17 октября 2018 г. 14:09
  • Function backup(Параметр1,Параметр2...){
    Действия архивации
    }

    Ваш код


    Возварт моей функции.


    И все работает но ваш код стоит в бездействии,пользователь заходит.
    17 октября 2018 г. 14:11
  • протестируйте закрывает ли 1с тот пример который я привел выше, так как я проверял его на блокноте + не забудьте проверить дату и время в первой строке.


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

    17 октября 2018 г. 15:05
    Модератор
  • закрывает,а так же не дает пользователю зайти
    17 октября 2018 г. 15:07
  • может стоит ваш код в функцию завернуть и проверять если бэкап еще идет,то возвращать вашу функцию 

    17 октября 2018 г. 15:08
  • function EndProcess([string]$process,[string]$EndTime){
    $process = "1cv8c.exe"
    $EndTime = $(Get-Date -Format "17:50:00").ToString()
    while ($true){
       Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
       Start-Sleep -s 1
       if ($(Get-Date) -gt $EndTime) {break}
        
    }
      }
    function BackUp([string]$CurentDat,[string]$Path,[string]$DestinationPath){
    $CurentDate = (Get-Date -Format "yyyyMMdd(1)").ToString() #Текущая дата
    $Path="C:\Тест\"
    $Dest="D:\Archive\$CurentDate.zip"
    & "C:\Program Files\7-Zip\7z.exe"  a  $Dest $path

    }
    Вот мой и ваш код,ваш я слегка изменил,как сделать,что бы они оба взаимодействовали,пока идет бэкап пользователи не тронули процесс.
    17 октября 2018 г. 15:18
  • Function backup(Параметр1,Параметр2...){
    Действия архивации
    }

    Ваш код


    Возварт моей функции.


    И все работает но ваш код стоит в бездействии,пользователь заходит.

    если логика такая как вы описали то произойдет сдедующее жирным вы создали функцию но на этом момемнте еще не работает (только существует)

    потом выполнится кусок который закроет приложения которые подпадают под фильтры (имя 1с и CommandName совпадает с regex) и будет ждать пока не наступит час Ч.

    после этого выполниться функция архивирования (в этот момент пользователя уже ничто не сдерживает

    Исходя из поменявшейся задачи предположу что вам нужно выполнить 2 куска кода в одно время - завершать процессы и бекапить данные. Если так то логика может быть такой 

    function BackUp ($param1, $param2){...}

    start-job -Name "1cupgrade" -scriptblock {

    while ($true){ Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ИБ"} | foreach {$_.Terminate()} Start-Sleep -s 10 }

    }

    backup -param1 123 -param2 abc

    get-job "1cupgrade" | stop-job -force

    get-job "1cupgrade" | remove-job

    в командах возможны опечатки так как нет под рукой поша что бы проверить синтаксис

    Если я Вас или задачу неправильно понял, то опишите ее полностью, так как мне не приходилось заниматься обновлением баз 1с и слабо представляю как это должно работать


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


    17 октября 2018 г. 15:18
    Модератор
  • function EndProcess([string]$process,[string]$EndTime){
    $process = "1cv8c.exe"
    $EndTime = $(Get-Date -Format "17:50:00").ToString()
    while ($true){
       Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
       Start-Sleep -s 1
       if ($(Get-Date) -gt $EndTime) {break}
        
    }
      }
    function BackUp([string]$CurentDat,[string]$Path,[string]$DestinationPath){
    $CurentDate = (Get-Date -Format "yyyyMMdd(1)").ToString() #Текущая дата
    $Path="C:\Тест\"
    $Dest="D:\Archive\$CurentDate.zip"
    & "C:\Program Files\7-Zip\7z.exe"  a  $Dest $path

    }
    Вот мой и ваш код,ваш я слегка изменил,как сделать,что бы они оба взаимодействовали  в одно и тоже время 

    Выше описал 2 блока кода. Еще раз кину сюда


    17 октября 2018 г. 15:27
  • то что я кинул ваш код в функцию не обращайте внимание,это просто эксперементы))
    17 октября 2018 г. 15:28
  • то что я кинул ваш код в функцию не обращайте внимание,это просто эксперементы))

    да он на 80% ваш :) 

    я выше привел пример сo start-job

    в таком случае будет создан отдельный процесс и если так то вы его можете остановить в любое нужное время

    P.S. пользуйтесь пожалуйста кодблоками и табуляциями для обозначения вложенности, это добавляет +23 к читаемости


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


    17 октября 2018 г. 15:33
    Модератор
  • Function backup(Параметр1,Параметр2...){
    Действия архивации
    }

    Ваш код


    Возварт моей функции.


    И все работает но ваш код стоит в бездействии,пользователь заходит.

    если логика такая как вы описали то произойдет сдедующее жирным вы создали функцию но на этом момемнте еще не работает (только существует)

    потом выполнится кусок который закроет приложения которые подпадают под фильтры (имя 1с и CommandName совпадает с regex) и будет ждать пока не наступит час Ч.

    после этого выполниться функция архивирования (в этот момент пользователя уже ничто не сдерживает

    Исходя из поменявшейся задачи предположу что вам нужно выполнить 2 куска кода в одно время - завершать процессы и бекапить данные. Если так то логика может быть такой 

    function BackUp ($param1, $param2){...}

    start-job -Name "1cupgrade" -scriptblock {

    while ($true){ Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "ИБ"} | foreach {$_.Terminate()} Start-Sleep -s 10 }

    }

    backup -param1 123 -param2 abc

    get-job "1cupgrade" | stop-job -force

    get-job "1cupgrade" | remove-job

    в командах возможны опечатки так как нет под рукой поша что бы проверить синтаксис

    Если я Вас или задачу неправильно понял, то опишите ее полностью, так как мне не приходилось заниматься обновлением баз 1с и слабо представляю как это должно работать


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


     А какие параметры сюда передаются в таком случае исходя из моего блока бэкапа.
    17 октября 2018 г. 15:43
  • backup -param1 123 -param2 abc

    А какие параметры передаются сюда исходя из моего кинутого кода?
    17 октября 2018 г. 15:44
  • А какие параметры передаются сюда исходя из моего кинутого кода?
    function BackUp {
       param (
          [string]$Path = "C:\Тест\",
          [string]$DestinationPath = "D:\Archive\$(Get-Date -Format "yyyyMMdd(1)").zip"
       )
       . "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    }

    функция выглядит как то так

    исходя из этого, если вызовете ее без параметров - будут использоваться дефолтные "C:\Тест" и "d:\Archive\20181017(1).zip


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

    17 октября 2018 г. 16:51
    Модератор
  • Start-Job : Отсутствует аргумент для параметра "ScriptBlock". Укажите параметр типа "System.Management.Automation.ScriptBloc
    k" и повторите попытку.
    строка:10 знак:29
    + start-job -Name "1cupgrade" -scriptblock
    +                             ~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Start-Job], ParameterBindingException
        + FullyQualifiedErrorId : MissingArgument,Microsoft.PowerShell.Commands.StartJobCommand

    выдает след ошибку 
    18 октября 2018 г. 8:04
  • покажите полный текст скрипта так как скорее всего пропустили фигурные скобки

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

    18 октября 2018 г. 8:47
    Модератор
  • function BackUp([string]$CurentDat,[string]$Path,[string]$DestinationPath){
    $CurentDate = (Get-Date -Format "yyyyMMdd(1)").ToString() #Текущая дата
    $Path="C:\ТестПапка\"
    $DestinationPath="D:\1C_Archive\$CurentDate.zip"
    & "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    }

    $process = "1cv8c.exe"
    $EndTime = $(Get-Date -Format "19:00:00").ToString()
    start-job -Name "1cupgrade" -scriptblock
     {
       while ($true){
          Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
          Start-Sleep -s 2
       }
    }
    BackUp 
    get-job "1cupgrade" | stop-job -force 
    get-job "1cupgrade" | remove-job



    Если я все верно написал вообще.
    18 октября 2018 г. 8:55
  • не совсем :)

    # эту функцию я выше уже правил, работать будет и так но параметры передать не сможете
    function BackUp([string]$CurentDat,[string]$Path,[string]$DestinationPath){
    $CurentDate = (Get-Date -Format "yyyyMMdd(1)").ToString() #Текущая дата
    $Path="C:\ТестПапка\"
    $DestinationPath="D:\1C_Archive\$CurentDate.zip"
    & "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    }
    
    # следующую строку вы не используете и можете удалить
    # $EndTime = $(Get-Date -Format "19:00:00").ToString()
    start-job -Name "1cupgrade" -scriptblock {
       $process = "1cv8c.exe"
       while ($true){
          Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
          Start-Sleep -s 2
       }
    }
    BackUp 
    get-job "1cupgrade" | stop-job -force 
    get-job "1cupgrade" | remove-job


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



    • Изменено Vector BCOModerator 18 октября 2018 г. 9:02
    • Помечено в качестве ответа KazunEditor 22 октября 2018 г. 7:34
    18 октября 2018 г. 9:01
    Модератор
  • Stop-Job : Не удается найти параметр, соответствующий имени параметра "force".
    строка:17 знак:32
    + get-job "1cupgrade" | stop-job -force
    +                                ~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Stop-Job], ParameterBindingException
        + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StopJobCommand
     
    remove-job : Команде не удалось удалить задание с ИД задания 1, так как оно не завершено. Чтобы удалить задание, сначала ост
    ановите его выполнение или используйте параметр Force.
    Имя параметра: Job
    строка:18 знак:23
    + get-job "1cupgrade" | remove-job
    +                       ~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Manageme...n.PSRemotingJob:PSRemotingJob) [Remove-Job], ArgumentExc 
       eption
        + FullyQualifiedErrorId : JobObjectNotFinishedCannotBeRemoved,Microsoft.PowerShell.Commands.RemoveJobCommand


    Еще ошибка))
    18 октября 2018 г. 9:06
  • 7z.exe : 
    строка:6 знак:4
    +    & "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
     
    WARNING: ЌҐ г¤ Ґвбп ­ ©вЁ гЄ § ­­л© д ©«.
    C:\’Ґбв

    + теперь он жалуется на функцию бэкапа.
    18 октября 2018 г. 9:14
  • 7z.exe : 
    строка:6 знак:4
    +    & "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    +    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
     
    WARNING: ЌҐ г¤ Ґвбп ­ ©вЁ гЄ § ­­л© д ©«.
    C:\’Ґбв

    + теперь он жалуется на функцию бэкапа.
     Извините дурака,с этим я разобрался,параметры то не передал))
    18 октября 2018 г. 9:29
  • Хотя нет до сих пор ошибка,он не выдает ее,но просто не бэкапит
    18 октября 2018 г. 9:53
  • function BackUp {
       param (
          [string]$Path = "C:\Тест\",
          [string]$DestinationPath = "D:\1C_Archive\$(Get-Date -Format "yyyyMMdd(1)").zip"
       )
       . "C:\Program Files\7-Zip\7z.exe"  a  $DestinationPath $path
    }

    start-job -Name "1cupgrade" -scriptblock {
       $process = "1cv8c.exe"
       while ($true){
          Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
          Start-Sleep -s 2
       }
    }
    BackUp  -Path  -DestinationPath
    get-job "1cupgrade" | stop-job -force 
    get-job "1cupgrade" | remove-job
    18 октября 2018 г. 9:54
  • BackUp : Отсутствует аргумент для параметра "Path". Укажите параметр типа "System.String" и повторите попытку.
    строка:16 знак:10
    + BackUp   -Path  -DestinationPath
    +          ~~~~~
        + CategoryInfo          : InvalidArgument: (:) [BackUp], ParameterBindingException
        + FullyQualifiedErrorId : MissingArgument,BackUp
     
    Stop-Job : Не удается найти параметр, соответствующий имени параметра "force".
    строка:17 знак:32
    + get-job "1cupgrade" | stop-job -force
    +                                ~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Stop-Job], ParameterBindingException
        + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StopJobCommand
     
    remove-job : Команде не удалось удалить задание с ИД задания 1, так как оно не завершено. Чтобы удалить задание, сначала ост
    ановите его выполнение или используйте параметр Force.
    Имя параметра: Job
    строка:18 знак:23
    + get-job "1cupgrade" | remove-job
    +                       ~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Manageme...n.PSRemotingJob:PSRemotingJob) [Remove-Job], ArgumentExc 
       eption
        + FullyQualifiedErrorId : JobObjectNotFinishedCannotBeRemoved,Microsoft.PowerShell.Commands.RemoveJobCommand
     
    remove-job : Команде не удалось удалить задание с ИД задания 3, так как оно не завершено. Чтобы удалить задание, сначала ост
    ановите его выполнение или используйте параметр Force.
    Имя параметра: Job
    строка:18 знак:23
    + get-job "1cupgrade" | remove-job
    +                       ~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Manageme...n.PSRemotingJob:PSRemotingJob) [Remove-Job], ArgumentExc 
       eption
        + FullyQualifiedErrorId : JobObjectNotFinishedCannotBeRemoved,Microsoft.PowerShell.Commands.RemoveJobCommand
    18 октября 2018 г. 10:02
  • Stop-Job : Не удается найти параметр, соответствующий имени параметра "force".
    строка:17 знак:32
    + get-job "1cupgrade" | stop-job -force
    +                                ~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Stop-Job], ParameterBindingException
        + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StopJobCommand
     
    remove-job : Команде не удалось удалить задание с ИД задания 1, так как оно не завершено. Чтобы удалить задание, сначала ост
    ановите его выполнение или используйте параметр Force.
    Имя параметра: Job
    строка:18 знак:23
    + get-job "1cupgrade" | remove-job
    +                       ~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Manageme...n.PSRemotingJob:PSRemotingJob) [Remove-Job], ArgumentExc 
       eption
        + FullyQualifiedErrorId : JobObjectNotFinishedCannotBeRemoved,Microsoft.PowerShell.Commands.RemoveJobCommand


    Еще ошибка))

    Как писал выше - код не тестировался пожэтому возможны ошибки в этом случае ключ -Force должен быть у команды remove-job

    get-job "1cupgrade" | stop-job
    get-job "1cupgrade" | remove-job -force


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

    18 октября 2018 г. 10:27
    Модератор
  • а что указать в параметрах 
    BackUp  -Path  -DestinationPath
    18 октября 2018 г. 10:33
  • function BackUp {
       param (
          [string]$Path = "C:\Тест\*",
          [string]$DestinationPath = "D:\1C_Archive\",
          [string]$ArchiveName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
       )
       & "C:\Program Files\7-Zip\7z.exe" a -o" $DestinationPath" -r "$ArchiveName" $path
    }

    выполнять можете или

    BackUp 

    или

    BackUp -Path "C:\this Folder Should Be Archived\*" -DestinationPath "d:\Archive123\" -ArchiveName 'somename.zip'


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


    18 октября 2018 г. 10:34
    Модератор
  • 7z.exe : 
    строка:7 знак:3
    +   & "C:\Program Files\7-Zip\7z.exe" a -o" $DestinationPath" -r "$Arch ...
    +   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
     
    WARNING: ‘Ёб⥬Ґ ­Ґ г¤ Ґвбп ­ ©вЁ гЄ § ­­л© Їгвм.
    C:\’Ґбв\
    18 октября 2018 г. 10:46
  • пересохраните скрипт через notepad++ в Utf8 или попробуйте обновить версию поша - по всей видимости проблема с  кодировкой, так как 7z не понимает каталог Тест и трактует его как ’Ґбв

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

    18 октября 2018 г. 11:06
    Модератор
  • Пош последней версии,я сделал как вы просили,ошибку выдает все равно 
    18 октября 2018 г. 12:55
  • в таком случае попробуйте тестировать через powershell (не ise) и обновить 7zip потому что у меня работает ок, единственное я там запятую в функции пропустил, но уже добавил :)


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

    18 октября 2018 г. 13:26
    Модератор
  • или параметры не правильно передаются или что,не работает хоть убей))  
    18 октября 2018 г. 13:59
  • function BackUp {
       param (
          [string]$Path = "C:\ТестПапка\",
          [string]$DestinationPath = "D:\1C_Archive\",
          [string]$ArchiveName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
       )
      & "C:\Program Files\7-Zip\7z.exe" a -o" $DestinationPath" -r "$ArchiveName" $path
    }

    start-job -Name "1cupgrade" -scriptblock {
       $process = "1cv8c.exe"
       while ($true){
          Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()}
          Start-Sleep -s 10
       }
    }
    BackUp -Path "C:\ТестПапка\*" -DestinationPath "D:\1C_Archive\" -ArchiveName 'name.zip' 
    get-job "1cupgrade" | stop-job 
    get-job "1cupgrade" | remove-job -force
    18 октября 2018 г. 13:59
  • я в аккурат так и проверял, только без джоба, потому что у меня нет 1с

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

    18 октября 2018 г. 14:05
    Модератор
  • нашел ошибку

    попробуйте так

    function BackUp {
       param (
          [string]$Path = "C:\ТестПапка\",
          [string]$DestinationPath = "D:\1C_Archive\",
          [string]$ArchiveName = "$(Get-Date -Format "yyyyMMdd(1)").zip"
       )
      & "C:\Program Files\7-Zip\7z.exe" a "$DestinationPath$ArchiveName" $path
    }


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

    18 октября 2018 г. 14:20
    Модератор
  • да помогло,а можно в Get-WmiObject Win32_Process -Filter "name = '$process'" | Where {$_.Commandline -match "Тест"} | foreach {$_.Terminate()} прописать еще базы,не только Тест базу но и еще с десяток таких,то есть что бы блочило 10 баз сразу?  
    18 октября 2018 г. 15:10
  • да, я там выше приводил пример -match '(test|best|west|guest)', или если это не корп тайна то можете их перечислить напишем  regex под ваши базы

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

    18 октября 2018 г. 15:50
    Модератор