|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] вопрос по VideoProcessor |
|
VBS/WSH/JS - [решено] вопрос по VideoProcessor
|
Новый участник Сообщения: 16 |
Нужна помощь корректно составить полный скрипт.
Есть скрипт возвращающий значение VideoProcessor в эхе: On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController",,48) For Each objItem in colItems Wscript.Echo objItem.VideoProcessor Next Соответственно, массив с значениями, как его жестко захардкодить в скрипте? Как пробежаться по нему и выполнить условие? |
|
Отправлено: 15:00, 15-02-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Во-первых, убрать совершенно бессмысленный «On Error Resume Next». Во-вторых, зачем Вам «Don't Match»? И что вообще даёт «Match»/«Don't Match» в информативном плане без знания какой именно это «Match»/«Don't Match»?! А если два адаптера?
Впрочем: |
Отправлено: 16:12, 15-02-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Спасибо за ответ, кстати, мне помогли ещё вот таким вариантом:
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController",,48) For Each objItem in colItems Wscript.Echo CheckVideoProcessor(objItem.VideoProcessor) Next Function CheckVideoProcessor(s) Dim all all = "GeForce GTS 240,GeForce GTS 250,GeForce GTS 260" 'разделитель - запятая! If InStr("," & all & ",", "," & s & ",") > 0 Then CheckVideoProcessor = "Match" Else CheckVideoProcessor = "Don't Match" End If End Function В теории 3 варианта возможно: 1. Все VideoProcessor есть в массиве --> "Match" 2. Хотя бы один VideoProcessor есть в массиве --> "Match" 3. Ни одного VideoProcessor нет в массиве --> "Don't Match" Проблема. Как её решить... вот вопрос. P.S.: Проверил ваш скрипт - он не корректно отрабатывает, сначала выводит "Match", нажимаем Ok - и 5 раз подряд получаем "Don't Match" |
Последний раз редактировалось semen77, 15-02-2013 в 17:04. Причина: Уточнение Отправлено: 16:45, 15-02-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата semen77:
Цитата semen77:
Решение (в упрощённом виде): |
||
Отправлено: 18:44, 15-02-2013 | #4 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Смысл - определить, присутствует ли в системе хотя бы один видеоадаптер удовлетворяющий заданным условиям (простое перечисление некоторых моделей).
Если все присутствуют - вывести "Match"; (ситуация, когда оба адаптера присутствуют в проверочном списке) Если присутствует хотя бы один - вывести "Match"; (ситуация наличия разных моделей, одна из которых отсутствует в проверочном списке, а другая присутствует) А если же таких видеоадаптеров нет совсем - вывести "Don't Match". (ситуация, когда отсутствует одна или несколько моделей в проверочном списке) Это тест видеосистемы средствами WMI, не более. |
|
Последний раз редактировалось semen77, 15-02-2013 в 19:05. Отправлено: 18:56, 15-02-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать semen77, ну, тогда это именно Ваш вариант. Заполняйте массив потребными наименованиями и пользуйте.
|
Отправлено: 05:33, 16-02-2013 | #6 |
Новый участник Сообщения: 16
|
Профиль | Отправить PM | Цитировать Iska, Отлично! В качестве альтернативы можно и так написать:
On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_VideoController",,48) match = False 'в начале - нет совпадений For Each objItem in colItems match = match Or CheckVideoProcessor(objItem.VideoProcessor) Next If match Then Wscript.Echo "Match" Else Wscript.Echo "Don't Match" End If Function CheckVideoProcessor(s) Dim all all = "GeForce GTS 240,GeForce GTS 250,GeForce GTS 260" 'разделитель - запятая! CheckVideoProcessor = InStr("," & all & ",", "," & s & ",") > 0 End Function |
Отправлено: 16:22, 16-02-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата semen77:
|
|
Отправлено: 17:48, 16-02-2013 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2008 - Вопрос по программе для открытия рисунков по умолчанию | flower | Windows Server 2008/2008 R2 | 4 | 18-10-2010 17:22 | |
Прочее - вопрос по загрузке образов cd/dvd дисков по сети | andi_filon | Общий по Linux | 4 | 21-08-2009 14:48 | |
Вопрос по платформам обработки данных и еще по всяким непонятным словам :) | koresaram | Хочу все знать | 8 | 19-02-2009 18:26 | |
RDP/Citrix/Term - Определение ip по имени пользователя или вопрос по программе BGinfo | gavBTR | Сетевые технологии | 2 | 24-07-2008 10:02 | |
Вопрос по работе с файлами по сети | NorthWich | Программное обеспечение Windows | 2 | 29-02-2008 12:56 |
|