Сценарий PowerShell неправильно отправляет по электронной почте файл отчета Excel при автоматическом запуске в планировщике

Когда я запускаю сценарий PowerSheel вручную — через файл .bat, который выполняет его с помощью интерпретатора PowerShell, — он правильно выполняет запрос SQL, создает файл Excel и отправляет его по электронной почте.

Если я автоматизирую это - запускаю файл .bat, который запускает файл PowerShell с интерпретатором через планировщик заданий Windows каждую ночь - тогда электронное письмо отправляется без файла.

Трудно скопировать код здесь, потому что я сделал хороший фреймворк, много функций с лямбда-функциями и все такое, но в целом:

$ExcelWorkBook.SaveAs($Filename)

$ExcelWorkBook.Закрыть()

$ExcelApp.Выйти()

(...)

Сон - секунд 500

(...)

$MailMessage.Attachments.Add($Filename)

$SMTP.Отправить($MailMessage)

Я слышал, что Excel на самом деле не поддерживает автоматизацию без графического интерфейса (планировщик задач Windows), но на самом деле это работало для меня через другую структуру.

Что я могу сделать, чтобы заставить его работать, если не могу, как я могу генерировать файлы Excel из PowerShell другим способом или как я могу просто создавать и отправлять отчеты по электронной почте в PowerShell?


person user1315373    schedule 17.07.2012    source источник
comment
Вам действительно нужен файл Excel? Можете ли вы сделать гораздо более простой CSV-файл для своего отчета?   -  person dpw    schedule 18.07.2012
comment
Отлаживайте настройку шаг за шагом. Во-первых, поставьте задачу только на отправку электронного письма. Если получится, добавьте вложение. Если это работает, то часть электронной почты в порядке. Поставьте задачу создать простой документ Excel без SQL и сохранить его в какую-нибудь директорию. Если получится, попробуйте отправить по электронной почте. Таким образом, вы сможете узнать, какая часть процесса идет наперекосяк: Excel, Sql, Mail или что-то совершенно другое.   -  person vonPryz    schedule 19.07.2012


Ответы (2)


если вы используете Windows 2008 или более позднюю версию, то задание, вероятно, выполняется в сеансе0 (читайте об изоляции сеанса0 в Microsoft).

Вы должны создать Desktop-Folders для session0, подробнее читайте здесь: http://social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91

Windows 2008 Server x64 Создайте папку C:\Windows\SysWOW64\config\systemprofile\Desktop

Windows 2008 Server x86 Создайте папку C:\Windows\System32\config\systemprofile\Desktop

Затем перезагрузите машину и повторите попытку. Я получил работу с автоматизацией Excel без графического интерфейса через планировщик задач и powershell, создав эти папки.

person Jan Behrens    schedule 28.11.2012

@ Дэн, да. CSV — очень плохой формат отчета для корпоративной отчетности, без цветов, без форматирования, без всего. Менеджеру было бы обидно найти такое в своем почтовом ящике.

@VonPryz - но вручную это работает! Так вы говорите отладить расписание?

person user1315373    schedule 30.07.2012