У меня возникла проблема, когда я автоматизировал создание 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
Мой источник был:
Вы пытаетесь запустить это, когда вы не вошли в систему? Если это так, я бы указал вам на эту статью Microsoft KB по некоторым вероятным причинам: Соображения по серверной автоматизации Office. Название говорит на стороне сервера но в статье также указывается, что это относится к клиентским версиям Windows, не запущенным в интерактивном сеансе с загруженным профилем пользователя.
Если вы действительно хотите, чтобы это запускалось без входа пользователя в систему (с опцией, которую вы описываете, это похоже на вас), в конечном итоге я не уверен, что вы сможете исправить свою проблему по причинам, описанным в статья. Если вам нужно, чтобы он запускался только при входе в систему, просто не выбирайте этот вариант?