Макросы Excel запускаются через powershell, но не запускаются диспетчером задач windows - PullRequest
1 голос
/ 03 февраля 2020

У меня есть скрипт, который проверяет папку на наличие файлов Excel, а затем, если этот «порог» больше 0, запускается макрос из другого файла Excel, который взаимодействует с этими папками Excel.

Когда я запускаю процесс вручную через powershell ISE, он работает нормально, но когда я использую планировщик задач windows, сценарий powershell запускается, но вызываемый макрос excel не запускается. Любые предложения, почему это может иметь место? Этот процесс раньше работал на сервере windows 2008 в порядке, но был перенесен на windows server 2012 и не будет работать правильно

  if ($count -gt $threshold){
    $excel = new-object -comobject excel.application

    $workbook = $excel.workbooks.open("D:\TimesheetService\IS-FS - AutoTimesheetLoader v2.3 - UAT.xlsm")

    $worksheet = $workbook.worksheets.item(1)

    $excel.Run("ImportTime")

    $workbook.close($false)

    $excel.quit()
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
    Remove-Variable excel
}

1 Ответ

0 голосов
/ 03 февраля 2020

Вы не можете использовать библиотеку COM Automation Excel (new-object -comobject excel.application) из запланированной задачи, , если эта задача не выполняется на оконной станции (сеансе) текущего зарегистрированного для пользователя .

То есть, чтобы использовать библиотеку COM Excel из запланированной задачи, для нее должна быть выбрана опция Run only when user is logged on, которую вы, возможно, не захотите, для две причины:

  • Это ограничивает выполнение вашей задачи только тогда, когда кто-то вошел в систему.

  • Текущий вошедший в систему пользователь будет см. окно задачи во время ее выполнения - если только вы не предпримете дополнительных шагов, чтобы скрыть ее (что невозможно сделать с помощью powershell.exe).

Примечание: существует обходной путь, который в настоящее время эффективен , но не поддерживается , поэтому лучше избегать i t - см. этот ответ на связанный вопрос superuser.com.

Поэтому рассматривают альтернативы, которые не имеют Это ограничение , такое как DocumentFormat.Open Xml Пакет Nuget .

См. эту статью поддержки Microsoft для получения дополнительной информации.

...