Назад | Перейти на главную страницу

При запуске в качестве запланированной задачи не удается сохранить книгу Excel при использовании COM-объекта Excel.Application в PowerShell

У меня возникла проблема, когда я автоматизировал создание COM-объекта Excel.Application, добавил данные в книгу, а затем сохранил документ как xlsx.

Это отлично работает, если:

Это терпит неудачу когда я изменяю ту же запланированную задачу, но устанавливаю для нее значение "запускать независимо от того, вошел ли пользователь в систему или нет".

Вот пример сценария, который иллюстрирует мою проблему:

$Excel = New-Object -Com Excel.Application
$Excelworkbook = $Excel.Workbooks.Add()
$excelworkbook.saveas("C:\temp\test.xlsx")
$excelworkbook.close()

У меня есть теория, что COM-объект каким-то образом не работает, если мой профиль не загружен / если он не выполняется в командном окне.

Есть идеи, какие параметры выбрать при создании запланированной задачи или какие параметры использовать при создании объекта Excel или с помощью функции SaveAs ()? Кто-нибудь может это воспроизвести? Я мог наблюдать такое поведение как на машине Server 2008 R2, так и на Windows 7. Я не пробовал другие платформы.

Меня это обожгло, и я не хотел переписывать код. Я видел ваш пост и несколько других, которые заставили меня сдаться. Однако моя настойчивость окупилась. Я пытался заставить Дженкинса запустить сценарий для инвентаризации нашей производственной среды и вывода в Excel. Мне не нужен текстовый документ, потому что я выделял версии программного обеспечения, которые не совпадали, в КРАСНОМ, поэтому мне понадобился Excel.

Вот ответ, который у меня сработал:

Вам необходимо создать папку (или две на 64-битных окнах):

(64 бит, всегда)

C: \ Windows \ System32 \ config \ systemprofile \ Dektop

(32 бит)

C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop

Ссылка, которую кто-то предоставил в качестве источника:

http://www.patton-tech.com/2012/05/printing-from-scheduled-task-as.html

Мой источник был:

http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/aede572b-4c1f-4729-bc9d-899fed5fad02

Вы пытаетесь запустить это, когда вы не вошли в систему? Если это так, я бы указал вам на эту статью Microsoft KB по некоторым вероятным причинам: Соображения по серверной автоматизации Office. Название говорит на стороне сервера но в статье также указывается, что это относится к клиентским версиям Windows, не запущенным в интерактивном сеансе с загруженным профилем пользователя.

Если вы действительно хотите, чтобы это запускалось без входа пользователя в систему (с опцией, которую вы описываете, это похоже на вас), в конечном итоге я не уверен, что вы сможете исправить свою проблему по причинам, описанным в статья. Если вам нужно, чтобы он запускался только при входе в систему, просто не выбирайте этот вариант?