Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Скрипт корректно работает интерактивно, но нет данных при запуске через планировщик

Ответить
Настройки темы
PowerShell - [решено] Скрипт корректно работает интерактивно, но нет данных при запуске через планировщик

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: DJ Mogarych
Дата: 16-09-2019
Привет, коллеги!
Помогите разобраться, пожалуйста.

Есть скрипт, который задействует модуль ImportExcel.
Когда я запускаю его интерактивно, всё работает прекрасно, данные извлекаются из таблички, подсчитываются и высылаются на почту.
Например, данные:
20 яблок
8 груш
3 бананов

Когда я сую этот скрипт в планировщик, данные, которые должен делать модуль, отсутствуют. Письмо приходит (т. е., сам скрипт работает), но там
0 яблок
0 груш
0 бананов

Задача в планировщике создана под той же самой учёткой, выполнять под наивысшими правами, вне зависимости от регистрации пользователя.
Модуль лежит уже в четырёх местах:
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\Modules\ImportExcel
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ImportExcel
C:\Program Files\WindowsPowerShell\Modules\ImportExcel
C:\Program Files (x86)\WindowsPowerShell\Modules\ImportExcel

Строка запуска в планировщике:
powershell.exe c:\scripts\script_report.ps1 -executionpolicy bypass

Явно, что при неинтерактивном выполнении модуль не работает. Почему?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:35, 16-09-2019

 

Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Попробуй написать тестовую заглушку с транскрипцией всего вывода в файл и там посмотришь на ошибки если вдруг они есть.
Нечто вроде такого планировщиком запусти:

Код: Выделить весь код
Start-Transcript -Path C:\templog.log -Force -Append
Import-Module путь\module.psm1
тут какой-то командлет из модуля
Stop-Transcript
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:01, 16-09-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Спасибо за способ логирования, я, честно говоря, и позабыл о нём.
Вот вывод ошибки:
Код: Выделить весь код
Транскрибирование запущено, выходной файл C:\temp\templog.log
Приложению Microsoft Excel не удается получить доступ к файлу "E:\temp\reports\Отчет.xls". Это мож
ет быть вызвано одной из следующих причин.

• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
C:\Program Files\WindowsPowerShell\Modules\ImportExcel\ConvertToExcelXlsx.ps1:53 знак:9
+         $null = $Excel.Workbooks.Open($xlsFile.FullName)
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], COMException
    + FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
Ничего не понимаю. Путь правильный, файл не используется ничем, никакой книги не открыто. В конце концов, в интерактивном-то режиме работает!

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:05, 16-09-2019 | #3


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


А какая часть ругается ошибкой? Import-Module или сам командлет?
Если второе то тут либо спрашивать у разработчика нюансы реализации либо самому код ковырять.

И диск Е - локальный или сетевой? Что будет если открываемый файл положить в корень С и убрать пробелы\спец.символы\кириллицу из пути? И\или как-нибудь задать ему гарантированно доступный рабочий каталог.

Последний раз редактировалось Charg, 16-09-2019 в 20:52.


Отправлено: 20:43, 16-09-2019 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Сам командлет, диск локальный.
Больше того - у меня был старый код модуля для конвертирования xls в csv:
Код: Выделить весь код
Function ExportWSToCSV ($excelFileName, $csvLoc) {
    $excelFile = "$path" + $excelFileName + ".xls"
    $E = New-Object -ComObject Excel.Application
    $E.Visible = $false
    $E.DisplayAlerts = $false
    $wb = $E.Workbooks.Open($excelFile)
    foreach ($ws in $wb.Worksheets)
    {
        $n = $excelFileName + "_" + $ws.Name
        $ws.SaveAs($csvLoc + $n + ".csv", 6)
    }
    $E.Quit()
}
И он тоже не работает, видать, что-то происходит в момент обращения к COM-объекту Экселя...

Идиотизм в том, что Powershell отлично работает с .xlsx вообще без Экселя через .NET, но исходный файл именно .xls, и его надо сначала преобразовать во что-то человеческое.

Вот, нашёл ещё одну тему на другом форуме, где точно такая же ситуация:
http://www.cyberforum.ru/powershell/thread2326375.html

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 16-09-2019 в 21:18.


Отправлено: 21:07, 16-09-2019 | #5


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


Ну как вариант - можно поизвращаться вот так https://stackoverflow.com/questions/...xcel-installed
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:19, 16-09-2019 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Завтра попробую, отпишу. Сегодня сил уже нет.
Спасибо!

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:31, 16-09-2019 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Powershell отлично работает с .xlsx вообще без Экселя через .NET »
Не покажете или направление не укажете?

Отправлено: 22:52, 16-09-2019 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Iska, модуль ImportExcel - https://www.powershellgallery.com/packages/ImportExcel

Обнаружил, что в составе Офиса есть файл excelcnv.exe, в результате задача решилась так:
Код: Выделить весь код
& "C:\Program Files (x86)\microsoft office\Office16\excelcnv.exe" -oice "$xls" "$($xls.FullName -replace '.xls','.xlsx')"
Ещё находил варианты:

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:45, 17-09-2019 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


DJ Mogarych, спасибо, ясно. Если я правильно понимаю код, он работает только с новым форматом Рабочих книг, с 2007+. Ну, хотя бы и так.

Отправлено: 18:03, 17-09-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Скрипт корректно работает интерактивно, но нет данных при запуске через планировщик

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - При запуске через планировщик заданий speedfan загружается в скрытом режиме anton2887 Microsoft Windows 7 11 23-08-2018 11:27
CMD/BAT - Автопуть до батника при запуске через планировщик surgutfred Скриптовые языки администрирования Windows 2 27-06-2017 08:53
Но при переносе данных с видеорегистратора нет файлов Klotik Microsoft Windows 10 19 08-07-2016 21:59
Разное - Конфликт IP адресов, каждый раз при запуске машины, но конфликтов нет! DimonNT Microsoft Windows 2000/XP 14 25-02-2016 13:46
При запуске компа чёрный экран но вроде всё работает LandRock Непонятные проблемы с Железом 9 11-04-2013 16:52




 
Переход