Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Нужно ли завершать скрипт

Ответить
Настройки темы
VBS/WSH/JS - Нужно ли завершать скрипт

Старожил


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

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


У меня в планировщике win2008R2 по многу раз выполняется vbs-скрипт, начинающийся с нижеприведенных строк и кончающийся только закрытием лог-файла.

Dim WshShell
Dim fso
Dim LogFile
Dim fLog
Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
LogFile = Left(WScript.ScriptName,Len(WScript.ScriptName)-4) & ".log"
Set fLog = fso.OpenTextFile(LogFile, 8, True)
...


Иногда срывается выполнения скрипта из-за невозможности запуска программы в нем. После этого, несмотря на удаление зависшего задания в taskmgr, планировщик
прекращает выполнять скрипт и пишет в журнале, что задача запущена, а ее действие и прекращение не наступает, т.е. зависание.
Приходится полностью удалять задачу в планировщике и ее пересоздавать, чтоб дальше работала.
Не может ли быть такое поведение из-за того, что нет WshShell.Quit и закрытия fso ? Или это не обязательно? Сервер я после сбоя не перегружаю, потому что пользователи не дают.

Отправлено: 23:05, 23-11-2019

 

Ветеран


Contributor


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

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


Имхо, аккуратнее надо делать скрипт, применять обработку ошибок, чтобы скрипт не выскакивал на окно с ошибочным неотвеченным сообщением. Для скрипта в планировщике Вы его не видите, а оно существует.
В этом смысле я бы больше доверял cmd

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 08:48, 24-11-2019 | #2



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

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


Ветеран


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

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


Цитата pavsem7:
У меня в планировщике win2008R2 по многу раз выполняется vbs-скрипт »
как вы его запускаете?

Цитата pavsem7:
несмотря на удаление зависшего задания в taskmgr, планировщик прекращает выполнять скрипт и пишет в журнале, что задача запущена »
в taskmgr не отображаются задания планировщика, только процессы - возможно вы не то или не всё "удаляете" - лучше через ProcessExplorer посмотреть дерево процессов (или хотя бы в Far'е в Process list проверить Parent PID того, что "удаляете")

Цитата pavsem7:
нет WshShell.Quit и закрытия fso ? Или это не обязательно? »
Это не обязательно, но лучше явно освобождать ресурсы. Для этого в нормальный языках есть try-catch-finally. Прекратите уже мучать дохлую лошадь (vbs) - пишите на jscript - потом хотя бы сможете применить выработанные навыки в других областях.

Отправлено: 10:55, 24-11-2019 | #3


Старожил


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

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


Цитата Busla:
У меня в планировщике win2008R2 по многу раз выполняется vbs-скрипт »
как вы его запускаете? »
Обычным образом: пишу в планировщике выполнить c:\folder\file.vbs

Цитата Busla:
в taskmgr не отображаются задания планировщика, только процессы - возможно вы не то или не всё "удаляете" »
В скрипте после вышеописанного вступления запускается внешняя обработка 1с. Запущенный 1С с именем пользователя, от которого стартует скрипт, я вижу в taskmgr, тут ошибки быть не может. В нормальном режиме, когда обработка отработает за полминуты, процесс в taskmgr пропадает, а если она не может отработать, то процесс висит запущенным.

Цитата Busla:
но лучше явно освобождать ресурсы. »
Т.к. скрипт запускается в день по 25 раз, а сервер может без перезагрузки висеть по многу дней, то, могут ли накопиться неосвобожденные ресурсы?
Как из освобождают, какими командами?

Цитата Busla:
Прекратите уже мучать дохлую лошадь (vbs) - пишите на jscript »
Эти скрипты мне достались в наследство от предыдущего админа, они работают много лет(8-10), только сейчас приходится изменять конфигурации серверов.
Мне доставались в наследство и jscript. Никакой особой разницы в разбирательстве с ними не ощущаю.
Почему vbs дохлый?

Последний раз редактировалось pavsem7, 24-11-2019 в 22:05.


Отправлено: 21:58, 24-11-2019 | #4


Ветеран


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

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


Цитата pavsem7:
Обычным образом: пишу в планировщике выполнить c:\folder\file.vbs »
обычно в планировщике прописывают явный запуск cscript.exe да ещё и с параметром B

Цитата pavsem7:
Запущенный 1С с именем пользователя, от которого стартует скрипт, я вижу в taskmgr, тут ошибки быть не может. »
конечно это не ваша ошибка, что планировщик запускает wscript, а "удаляете" вы 1с.exe
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:16, 25-11-2019 | #5


Старожил


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

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


Цитата Busla:
конечно это не ваша ошибка, что планировщик запускает wscript, а "удаляете" вы 1с.exe »
А как мне закончить выполнение wscript в такой ситуации?

Отправлено: 09:34, 25-11-2019 | #6


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

fascinating rhythm


Moderator


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

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


Цитата pavsem7:
Почему vbs дохлый? »
Потому что он уже давно не развивается, и с 2006 года существует Powershell как гораздо более удобная и современная замена.

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


Отправлено: 09:49, 25-11-2019 | #7


Ветеран


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

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


Цитата Busla:
Прекратите уже мучать дохлую лошадь (vbs) - пишите на jscript »
Как раз с VBScript проблемы очистки памяти нет. А вот для JScript пришлось целое обновление выпускать (для принудительного запуска процесса сборки «мусора»): Excel Does Not Shut Down When Automating from JScript - Office | Microsoft Docs.

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

P.S. try-catch-finally ещё надо уметь правильно пользовать. А с этим проблем ещё больше.


Цитата pavsem7:
А как мне закончить выполнение wscript в такой ситуации? »
Никак не надо. Сделайте то, что написал коллега Busla:
Цитата Busla:
обычно в планировщике прописывают явный запуск cscript.exe да ещё и с //B »

Отправлено: 14:57, 25-11-2019 | #8


Старожил


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

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


Цитата Iska:
обычно в планировщике прописывают явный запуск cscript.exe да ещё и с //B »
А этот ключ В устранит таблички в запускаемом из скрипта 1С7.7?
В случае сбоя 1С именно они появляются обычно.

И как остановить скрипт, если 1с завис все-таки?

Отправлено: 21:02, 25-11-2019 | #9


Ветеран


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

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


Цитата pavsem7:
А этот ключ В устранит таблички в запускаемом из скрипта 1С7.7? »
Какие таблички?

Запустите:
Код: Выделить весь код
wscript.exe /?
прочитайте.

Цитата pavsem7:
В случае сбоя 1С именно они появляются обычно. »
Сбои 1С должны устраняться на стороне 1С. Ни пакетные файлы, ни Windows Script Host, ни PowerShell к ним никаким боком (в двух последних случаях — если не используется Automation).

Цитата pavsem7:
И как остановить скрипт, если 1с завис все-таки? »
Почему Вы решили, что 1С — именно зависло?
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:05, 25-11-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Нужно ли завершать скрипт

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Можно ли переписать этот vbs скрипт в бат скрипт ufooo000 Скриптовые языки администрирования Windows 1 07-02-2017 08:52
CMD/BAT - [решено] Можно ли этот (.vbs) скрипт интегрировать в (.bat) скрипт? ufooo000 Скриптовые языки администрирования Windows 6 01-01-2017 10:23
Windows server 2003, можно ли разрешить пользователю завершать сеансы? vsafonin Microsoft Windows NT/2000/2003 0 23-03-2015 21:08
V. 2010 - В АД уже есть exchange 2003, нужно переехать на 2010, нужно ли обновлять схему АД akaAmigos Microsoft Exchange Server 54 30-07-2012 14:10
Можно ли (и главное нужно ли) установить INF драйвера для Windows2000 на WindowsXP? Foma Microsoft Windows 2000/XP 7 24-03-2005 11:48




 
Переход