none
Остановка ROBOCOPY при запуске в Task Sheduler из Powershell RRS feed

  • Вопрос

  • Добрый день.

    Есть задача копирования файлов из одной папки в другую, для которой я использую robocopy.exe. Запускается утилита в коде Pwershell:

    $ParallelCopy = { Param($DBNAME,$foldername,$filename) C:\Windows\System32\robocopy.exe /Z /DCOPY:T /V /ETA /MOV /MT:64 /LOG:"C:\windows\logs\WindowsServerBackup\robocopy_$DBNAME.log"\

    "$foldername\BACKUP" "$foldername\$DBNAME" "$filename" } Start-Job -name "$DBNAME" -ScriptBlock $ParallelCopy -ArgumentList "$DBNAME","$foldername","$($list.Name)"


    При запуске скрипта интерактивно в ISE проблем никаких нет, всё отрабатывает как нужно, запускается несколько процессов robocopy, которые отрабатывают свои задания. Копирование (а точнее перенос) происходит успешно.

    Если же запустить скрипт в планировщике (powershell.exe c:\script.ps1) то robocopy останавливается на 0%, в новом месте создаёт новый файл и вылетает.

    Учётная запись для запуска скрипта используется одна и та же.

    16 октября 2012 г. 18:31

Ответы

Все ответы

  • Попробуйте: Start-Job ... | Wait-Job

    • Помечено в качестве ответа ITD27M01 17 октября 2012 г. 5:41
    16 октября 2012 г. 18:48
    Отвечающий

  • Попробуйте скрипт *.ps1 конвертнуть в exe, а потом exe скормить шедулеру.
    • Предложено в качестве ответа Angel-Keeper 17 октября 2012 г. 0:14
    17 октября 2012 г. 0:13
  • Kazun спасибо!

    Почитал по наводке документацию, оказывается, действительно, суть Job'а в том, что он существует в текущей сессии, хотя и выполняется в выделенном хосте pwershell. Моя задача была в распараллеливании операции robocopy, поэтому ожидать окончания каждой задачи мне не нужно, добавил в конец скрипта

    Get-Job | Wait-Job

    Соответственно всё завертелось как нужно.

    17 октября 2012 г. 5:40