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

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

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

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


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

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


Скрипт выглядит так
Код: Выделить весь код
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
 
Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service") 
 
For Each objService in colRunningServices  
    Wscript.Echo objService.DisplayName  & VbTab &"|"& VbTab & objService.State 
Next
руские буквы отображатет некоректно,
как поменять на 1251 кодировку
и отсортировать по именам сервисов?

спасибо

Отправлено: 14:56, 18-12-2012

 

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


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

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


Изображения
Тип файла: jpg Screenshot1.jpg
(98.7 Kb, 8 просмотров)

я знаю что за агент но думаю что ВАМ это не скажет не очем, и скриншот непонятно зачем.

агент - OVO (это агент HP Operation Manager)
запускаю я все это с HP BSM (к которому подключен HP Operation Manager), и туда же приходит ответ.

как это может помочь сменить кодировку ?

Отправлено: 15:20, 19-12-2012 | #11



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

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


Ветеран


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

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


Цитата andr_mozg:
я знаю что за агент но думаю что ВАМ это не скажет не очем, »
Скажет.

Цитата andr_mozg:
и скриншот непонятно зачем.

как это может помочь сменить кодировку ?»
Я ж волшебник .

Попробуйте так:
читать дальше »
Код: Выделить весь код
Option Explicit

Const adVarChar = 200

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT * FROM  Win32_Service")

With WScript.CreateObject("ADODB.Recordset")
	With .Fields
		.Append "Name",        adVarChar, 2^15 - 1
		.Append "DisplayName", adVarChar, 2^15 - 1
		.Append "State",       adVarChar, 2^15 - 1
	End With
	
	.Open
	.Sort = "DisplayName ASC"
	
	For Each objSWbemObjectEx In collSWbemObjectSet
		.AddNew Array("Name", "DisplayName", "State"), Array(objSWbemObjectEx.Name, objSWbemObjectEx.DisplayName, objSWbemObjectEx.State)
	Next
	
	.MoveFirst
	
	Do Until .EOF
		With .Fields
			WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "windows-1251", "cp866")
			WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "cp866", "windows-1251")
		End With
		
		.MoveNext
	Loop
	
	.Close
End With

Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0

В вывод пойдут две строки:
Код: Выделить весь код
			WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "windows-1251", "cp866")
			WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "cp866", "windows-1251")
Посмотрите по полученному выводу, не подойдёт ли Вам какая-либо из них. Лишнюю уберите.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:21, 19-12-2012 | #12


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


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

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


Спасибо, думаю что вариант вывода номер 2 мой случай, завтра узнаю.
Глядя на все это решил поизучать VBS, и попробовать решить данную задачу посвоему.

P.S. не все понятно по скрипту, если можно прокоментить бы. (сортировка например)

Последний раз редактировалось andr_mozg, 19-12-2012 в 21:10.


Отправлено: 19:56, 19-12-2012 | #13


Ветеран


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

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


Цитата andr_mozg:
P.S. не все понятно по скрипту, если можно прокоментить бы. (сортировка например) »
Особо комментировать-то там и нечего.

Создаём набор записей. Добавляем в его структуру три текстовых поля. Задаём сортировку по указанному полю по возрастанию. Перебирая перечень служб, добавляем записи в набор. Затем перемещаемся к первой записи и перебираем весь набор.

Была б в WQL возможность задать сортировку — этого бы кода не потребовалось.

Отправлено: 05:22, 20-12-2012 | #14


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


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

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


пишит что переменная не определена StrConvert

Отправлено: 12:08, 21-12-2012 | #15


Ветеран


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

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


В этом посте нажмите текст «читать дальше». Откроется спойлер с кодом.

Отправлено: 15:53, 21-12-2012 | #16


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


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

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


ну вобщем тот код я и пробовал.
на своей машине запускал и на других, ответ тот же.

Отправлено: 12:11, 22-12-2012 | #17


Ветеран


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

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


Стыд. Стыд и позор. Я не представляю — как?! Как могло случиться, что я ошибся в таком элементарном действии, как вставка кода в сообщение?! Как я мог на этом этапе потерять функцию?! Ладно, шут с ним. Но почему я не проверил код после Вашего первого сообщения, а решил, что Вы пытались запустить две строки вместо кода из спойлера?! И с настойчивостью долдона твердил одно и то же, вместо того, чтобы просто взять и проверить сам код? Не знаю.

Коллега! Я был не прав. Приношу Вам свои искренние извинения, буде таковые могут быть приняты.

Вот тот же код вместе с потерянной функцией:
читать дальше »
Код: Выделить весь код
Option Explicit

Const adVarChar = 200

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set collSWbemObjectSet = objSWbemServicesEx.ExecQuery("SELECT * FROM  Win32_Service")

With WScript.CreateObject("ADODB.Recordset")
	With .Fields
		.Append "Name",        adVarChar, 2^15 - 1
		.Append "DisplayName", adVarChar, 2^15 - 1
		.Append "State",       adVarChar, 2^15 - 1
	End With
	
	.Open
	.Sort = "DisplayName ASC"
	
	For Each objSWbemObjectEx In collSWbemObjectSet
		.AddNew Array("Name", "DisplayName", "State"), Array(objSWbemObjectEx.Name, objSWbemObjectEx.DisplayName, objSWbemObjectEx.State)
	Next
	
	.MoveFirst
	
	Do Until .EOF
		With .Fields
			WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "windows-1251", "cp866")
			WScript.Echo StrConvert(.Item("Name").Value & vbTab & .Item("State").Value & vbTab & .Item("DisplayName").Value, "cp866", "windows-1251")
		End With
		
		.MoveNext
	Loop
	
	.Close
End With

Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Function StrConvert(strText, strSourceCharset, strDestCharset)
	Const adTypeText = 2
	Const adModeReadWrite = 3
	
	With WScript.CreateObject("ADODB.Stream")
		.Type = adTypeText
		.Mode = adModeReadWrite
		
		.Open
		.Charset = strSourceCharset
		.WriteText strText
		
		.Position = 0
		.Charset = strDestCharset
		
		strConvert = .ReadText
	End With
End Function
'=============================================================================

Последний раз редактировалось Iska, 22-12-2012 в 14:45.

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

Отправлено: 14:29, 22-12-2012 | #18


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


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

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


Да все ОК, я догадывался что функция должна быть или может библиотека какая, но так как в VBS не особо, то и оценить не могу.
Главное разобрались, я обычно на AutoIT пишу, меня для всех моиз задачь он устраивал, но тут нужно именно либо VBS/PHP/JAVA.

Спасиб.

P.S. А ошибки, как раз и появляются тогда когда уверовал в то что все делаеш без ошибок... Сам переодически страдаю )))

P.s.2 подошол первый вариант, вывода.

Последний раз редактировалось andr_mozg, 24-12-2012 в 11:23.


Отправлено: 11:14, 24-12-2012 | #19


Ветеран


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

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


Цитата andr_mozg:
P.S. А ошибки, как раз и появляются тогда когда уверовал в то что все делаеш без ошибок... Сам переодически страдаю ))) »
В том-то и дело, что ошибок не было. Я сделал, запустил, проверил несколько раз, скопировал код, вставил в сообщение. Как в последовательности Ctrl-A, Ctrl-Insert, Alt-Tab, Alt-W (вставка буфера обмена и обрамление тэгом «code») могла пропасть функция — не представляю. Но оказалось именно так. Увы.

Отправлено: 12:31, 24-12-2012 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как узнать сколько всего "Статусов" на форуме? micro8 Хочу все знать 4 10-10-2012 23:35
C/C++ - Помогите отсортировать двумерный массив (С++) Luda-tin Программирование и базы данных 4 15-05-2012 08:57
Как отсортировать одинаковые файлы? Evita Хочу все знать 3 25-08-2005 18:37
Помоги поправить яваскрипт! плз! MadEx Вебмастеру 2 30-05-2005 12:25
Как отсортировать улицы на FoxPro Liana111 Программирование и базы данных 2 26-04-2004 08:20




 
Переход