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

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

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

Аватара для Kobzar

Пользователь


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

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


Предположим что мы имеем некий скрипт который опрашивает службу "Супер мего служба"
и если она выключена - запускает ее! Скрипт налажен и настроен !


var ServiceName, WshShell, WshellApp;
WshShell = WScript.CreateObject("WScript.Shell");
WshellApp = WScript.CreateObject("Shell.Application");
ServiceName = "AudioSrv";
if (WshellApp.IsServiceRunning(ServiceName))
WScript.Echo ("Сервис ", ""+ServiceName , " запущен!")
else
WshShell.Run("sc start " +ServiceName 1, true);
WScript.Echo (ServiceName);

Вот в таком состоянии он работает. НО !
Если имя службы состоит из одного слова на латинице. В противном случае "Супер мего служба" - не отрабатывает , как как нужно передать это значение в скобочках (Лапки)
Как это сделать ?:

Отправлено: 14:50, 04-01-2011

 


Moderator


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

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


Kobzar, попробуйте так:
Код: Выделить весь код
var strComputer = ".";
var objWMIService = GetObject(
    "winmgmts:{impersonationLevel=impersonate}!\\\\" +
    strComputer + "\\root\\cimv2");

var ServiceName = "Супер мего служба";
var colServices = objWMIService.ExecQuery(
    "SELECT * FROM Win32_Service WHERE Name = '" + ServiceName + "'");

var e = new Enumerator(colServices);
for (; !e.atEnd(); e.moveNext())
  if (e.item().Started)
    WScript.Echo("Служба " + ServiceName + " запущена!")
  else
    e.item().StartService();
Кодировка Win-1251 (обычная).
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:03, 04-01-2011 | #2



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

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


Аватара для Kobzar

Пользователь


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

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


Ваш метод работает ! Я видел этот скрипт в инете! Но мне требовалось разобрать именно свой вариант !
Кстати - он тоже работает и имеет вид


Код: Выделить весь код
var ServiceName, WshShell, WshellApp; 
WshShell = WScript.CreateObject("WScript.Shell");
WshellApp = WScript.CreateObject("Shell.Application");
ServiceName = "1C:Enterprise 8.2 Server Agent";
'ServiceName = "AudioSrv";'
if (WshellApp.IsServiceRunning(ServiceName))
    WScript.Echo ("Сервис ", ""+ServiceName , " запущен!")
else
WshShell.Run("sc start \"" +ServiceName + "\"" , 1, true);

Отправлено: 16:19, 04-01-2011 | #3



Moderator


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

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


Цитата Kobzar:
Но мне требовалось разобрать именно свой вариант !
Непонятно, зачем из JS-скрипта вызывать консольное приложение sc.exe (если можно обойтись без этого).

Отправлено: 16:30, 04-01-2011 | #4


Аватара для Kobzar

Пользователь


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

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


пример ?

Отправлено: 16:56, 04-01-2011 | #5



Moderator


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

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


Цитата Kobzar:
пример ?
Что?

Отправлено: 17:21, 04-01-2011 | #6


Аватара для Kobzar

Пользователь


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

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


собственно немного мануала и вот оно

var i, ServiceName, WshShell, WshellApp;
WShell = new ActiveXObject("WScript.Shell");
WShellApp = new ActiveXObject("Shell.Application");
ServiceName = "TeamViewer6";

for (i=0; i<3; i++)
{
if (WShellApp.IsServiceRunning(ServiceName))
WScript.Echo ("Сервис " + ServiceName + " запущен!")
else
WShellApp.ServiceStart("" +ServiceName, false);
WScript.Sleep(5000);
}

Отправлено: 13:09, 05-01-2011 | #7


Ветеран


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

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


Два минуса данного подхода — то, что работает сие на локальной машине, и то, что нет возможности отловить неудачу запуска службы без лишних телодвижений. Особенно «красиво» смотрятся повторы. Вариант Petya V4sechkin'а идеологически более корректен.

Отправлено: 14:25, 05-01-2011 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Загадочная Системная переменная GreyAngel Windows Server 2008/2008 R2 1 03-07-2010 09:44
CMD/BAT - [решено] Два файла - как одна переменная, переменная - как параметр taravasya Скриптовые языки администрирования Windows 6 16-02-2010 04:49
C/C++ - Какая переменная быстрее? Ferum01 Программирование и базы данных 7 08-10-2009 02:12
Глобальная переменная 11943499 AutoIt 9 23-07-2009 20:58
Переменная kern.maxproc xliver Общий по FreeBSD 2 02-03-2007 22:38




 
Переход