Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как вычислить параметр командной строки? (http://forum.oszone.net/showthread.php?t=298032)

SharkX58 07-04-2015 12:08 2492642

Как вычислить параметр командной строки?
 
Суть. Нужно сделать, чтобы скрипт определял запущены ли регламентные задания в 1с в отдельном процессе и если не запущен то предупреждал пользователя и высылал письмо на почту. Проблема в том, что у самой 1с и регламентного задания процессы одинаковые и нужно определить по параметры командной строки. Скрипт выводит содержимое CommandLine, там есть параметр DoscheduledJobs. Подскажите как написать условие проверки, если есть данный параметр DoscheduledJobs, то делаю то то, если нет то делаем то?

Скрипт на js.

var PsWMI, PsProcesses1, PsProcess1, PsList1, Mess1;
var vbCritical=16;

//Создаем экземпляр объекта WshShell
var WshShell = WScript.CreateObject("WScript.Shell");

//Включаем обработку исключительных ситуаций
try {
//Соединяемся с WMI
PsWMI=GetObject("winMgmts:");
}

//Начинаем обработку возможных ошибок
catch (e) {
if (e!=0) {
Mess ="Ошибка\nКод ошибки: " + err.Number;
WshShell.Popup(Mess,0,"Запущенные прoцеccы",vbCritical);
WScript.Quit();
}
}

//Создаем кoллeкцию всех работающих процеccoв
PsProcesses1=new Enumerator(PsWMI.ExecQuery("SELECT * FROM Win32_Process where name='1cv8c.exe'"));
PsList1="Зaпущенныe прoцеccы\n\n";

//Цикл для перебора коллекции
while (!PsProcesses1.atEnd()) {
PsProcess1=PsProcesses1.item ();
PsList1+=PsProcess1.Name + " " + PsProcess1.ProcessID + "\n"+PsProcess1.CommandLine ;
PsProcesses1.moveNext();


}
//Выводим кoллeкцию процеccов и их идентификаторов
WScript.Echo(PsList1);

Либо может кто подскажет как в vbs это можно было бы реализовать было бы лучше.

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

set service = GetObject ("winmgmts:")

for each Process in Service.InstancesOf ("Win32_Process")
If Process.Name = "1cv8.exe" then
wscript.quit
End If
next

Dim o_Mess, v_Conf
v_Conf = "http://schemas.microsoft.com/cdo/configuration/"
Set o_Mess = CreateObject("CDO.Message")
With o_Mess
.To = "почта" 'куда отправляем
.From = "имя <почта>" 'имя отправителя + Email
.Subject = "Остановлено обновление 1С" 'Тема письма
.TextBody = "Необходимо уведомить администратора салона" 'Сообщение
' .AddAttachment "C:\data.log" 'Прикрепить файл
.TextBodyPart.Charset = "windows-1251" 'русская кодировка
With .Configuration.Fields
.Item(v_Conf & "sendusing") = 2 'без использования каталога Server Exchange
.Item(v_Conf & "smtpserver") = "smtp.yandex.ru" 'Адрес SMTP-сервера
.Item(v_Conf & "smtpauthenticate") = 1 'Тип авторизации
.Item(v_Conf & "sendusername") = "почта" 'здесь имя пользователя без @
.Item(v_Conf & "sendpassword") = "" 'пароль
.Item(v_Conf & "smtpserverport") = 465 'порт (альтернативный - 465)
.Item(v_Conf & "smtpusessl") = True 'использовать ли шифрованое подключение SSL
.Item(v_Conf & "smtpconnectiontimeout") = 60 'Время до завершения повторных попыток подключения
.Update
End With
.send
End With
Set o_Mess = Nothing

MsgBox "НЕ ЗАПУЩЕН ОБМЕН 1С, СРОЧНО ЗАПУСТИТЬ!!!", 0, "ВНИМАНИЕ!"

Iska 07-04-2015 15:57 2492735

Цитата:

Цитата SharkX58
Скрипт выводит содержимое CommandLine, там есть параметр DoscheduledJobs. »

Покажите, как оно выглядит, это самое содержимое для искомого процесса.

SharkX58 08-04-2015 06:27 2493043

Вложений: 1
Вот.


Время: 01:28.

Время: 01:28.
© OSzone.net 2001-