|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Задать массив и цикл |
|
[решено] Задать массив и цикл
|
Пользователь Сообщения: 144 |
Добрый день!
Есть такой скрипт: $strComputer = "." $strSoftwareName = "Java(TM) 7 Update 5" ;Start Uninstall Script $objWMIService = ObjGet("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") $colSoftware = $objWMIService.ExecQuery _ ("Select * from Win32_Product Where Name = '" & $strSoftwareName & "'") For $objSoftware in $colSoftware $objSoftware.Uninstall() Next Помогите сделать так, чтобы: переменная $strSoftwareName состояла из множества имен, т.е. была массивом (желательно поудобнения для записи, чтобы можно было менять имена или дописывать), а в цикле эти имена перебирались.. |
|
Отправлено: 10:05, 11-07-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Например, так (не проверялось):
AutoItSetOption("MustDeclareVars", 1) Local $aSoftwareNames[3] = ["Java(TM) 7 Update 5", "Java(TM) 7 Update 6", "Java(TM) 7 Update 7"] Local $sSoftwareName Local $sComputer = "." Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer($sComputer, "root\cimv2") Local $cSWbemObjectSet = $oSWbemServicesEx.ExecQuery("SELECT * FROM Win32_Product") Local $oSWbemObjectEx For $oSWbemObjectEx In $cSWbemObjectSet For $sSoftwareName In $aSoftwareNames If $sSoftwareName = $oSWbemObjectEx.Name Then $oSWbemObjectEx.Uninstall() EndIf Next Next $oSWbemObjectEx = 0 $cSWbemObjectSet = 0 $oSWbemServicesEx = 0 $oSWbemLocator = 0 Exit(0) |
Отправлено: 11:35, 11-07-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Ага, работает, спасибо.
|
Отправлено: 11:55, 11-07-2012 | #3 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Не знаете, почему может возникать данная проблема?
![]() "Error: The requested action with this object has failed" AutoItSetOption("MustDeclareVars", 1) Local $aSoftwareNames[40] = [ _ "Java 2 Runtime Environment Standard Edition v1.2.2", _ "Java 2 Runtime Environment Standard Edition v1.3.1_05", _ "Java 2 Runtime Environment Standard Edition v1.3.1_17", _ "Java 2 Runtime Environment, SE v1.4.2_01", _ "Java 2 Runtime Environment, SE v1.4.2_03", _ "Java 2 Runtime Environment, SE v1.4.2_05", _ "Java 2 Runtime Environment, SE v1.4.2_06", _ "Java 2 Runtime Environment, SE v1.4.2_07", _ "Java 2 Runtime Environment, SE v1.4.2_08", _ "Java 2 Runtime Environment, SE v1.4.2_12", _ "Java 2 Runtime Environment, SE v1.4.2_13", _ "Java 2 Runtime Environment, SE v1.4.2_15", _ "Java 2 Runtime Environment, SE v1.4.2_16", _ "Java 2 Runtime Environment, SE v1.4.2_19", _ "Java Auto Updater", _ "Java(TM) 6 Update 10", _ "Java(TM) 6 Update 11", _ "Java(TM) 6 Update 13", _ "Java(TM) 6 Update 17", _ "Java(TM) 6 Update 18", _ "Java(TM) 6 Update 2", _ "Java(TM) 6 Update 20", _ "Java(TM) 6 Update 21", _ "Java(TM) 6 Update 22", _ "Java(TM) 6 Update 23", _ "Java(TM) 6 Update 24", _ "Java(TM) 6 Update 26", _ "Java(TM) 6 Update 29", _ "Java(TM) 6 Update 29 (64-bit)", _ "Java(TM) 6 Update 3", _ "Java(TM) 6 Update 30", _ "Java(TM) 6 Update 31", _ "Java(TM) 6 Update 31 (64-bit)", _ "Java(TM) 6 Update 32", _ "Java(TM) 6 Update 32 (64-bit)", _ "Java(TM) 6 Update 5", _ "Java(TM) 6 Update 7", _ "Java(TM) 7 Update 3", _ "Java(TM) 7 Update 4", _ "Java(TM) 7 Update 4 (64-bit)"] Local $sComputer = "." Local $sSoftwareName Local $oSWbemLocator = ObjCreate("WbemScripting.SWbemLocator") Local $oSWbemServicesEx = $oSWbemLocator.ConnectServer($sComputer, "root\cimv2") Local $cSWbemObjectSet = $oSWbemServicesEx.ExecQuery("SELECT * FROM Win32_Product") Local $oSWbemObjectEx For $oSWbemObjectEx In $cSWbemObjectSet For $sSoftwareName In $aSoftwareNames If $sSoftwareName = $oSWbemObjectEx.Name Then $oSWbemObjectEx.Uninstall() EndIf Next Next $oSWbemObjectEx = 0 $cSWbemObjectSet = 0 $oSWbemServicesEx = 0 $oSWbemLocator = 0 Exit(0) |
Отправлено: 14:51, 11-07-2012 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, Вы уверены, что приведённая ошибка воспроизводится именно приведённым кодом?
Попробуйте исполнить этот код на проблемной машине: в неизменном виде. При появлении сообщения об ошибке нажмите в окне сообщения об ошибке «Ctrl-C» и выложите содержимое буфера обмена сюда. |
|
Отправлено: 23:40, 11-07-2012 | #5 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Добрый день!
Получился вот такой лог: --------------------------- --------------------------- We intercepted a COM Error ! Number is: 80020009 Windescription is: Name of the Object generating the error: SWbemObjectEx Source Object's description: Not found The number returned from GetLastError(): 0 Script Line: -1 --------------------------- ОК --------------------------- |
Отправлено: 11:08, 12-07-2012 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Спасибо, не ясно
![]() Озвучьте ещё версию ОС, версию Windows Installer на машине, для которой исполняется скрипт. |
Отправлено: 11:35, 12-07-2012 | #7 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Windows 7 SP1 64 bit
Установщик Windows®. Версия 5.0.7601.17514 |
Отправлено: 11:55, 12-07-2012 | #8 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Дописал первоначальный свой скрипт:
Local $strComputer = "." Local $sSoftwareName Local $aSoftwareNames[40] = [ _ "Java 2 Runtime Environment Standard Edition v1.2.2", _ "Java 2 Runtime Environment Standard Edition v1.3.1_05", _ "Java 2 Runtime Environment Standard Edition v1.3.1_17", _ "Java 2 Runtime Environment, SE v1.4.2_01", _ "Java 2 Runtime Environment, SE v1.4.2_03", _ "Java 2 Runtime Environment, SE v1.4.2_05", _ "Java 2 Runtime Environment, SE v1.4.2_06", _ "Java 2 Runtime Environment, SE v1.4.2_07", _ "Java 2 Runtime Environment, SE v1.4.2_08", _ "Java 2 Runtime Environment, SE v1.4.2_12", _ "Java 2 Runtime Environment, SE v1.4.2_13", _ "Java 2 Runtime Environment, SE v1.4.2_15", _ "Java 2 Runtime Environment, SE v1.4.2_16", _ "Java 2 Runtime Environment, SE v1.4.2_19", _ "Java Auto Updater", _ "Java(TM) 6 Update 10", _ "Java(TM) 6 Update 11", _ "Java(TM) 6 Update 13", _ "Java(TM) 6 Update 17", _ "Java(TM) 6 Update 18", _ "Java(TM) 6 Update 2", _ "Java(TM) 6 Update 20", _ "Java(TM) 6 Update 21", _ "Java(TM) 6 Update 22", _ "Java(TM) 6 Update 23", _ "Java(TM) 6 Update 24", _ "Java(TM) 6 Update 26", _ "Java(TM) 6 Update 29", _ "Java(TM) 6 Update 29 (64-bit)", _ "Java(TM) 6 Update 3", _ "Java(TM) 6 Update 30", _ "Java(TM) 6 Update 31", _ "Java(TM) 6 Update 31 (64-bit)", _ "Java(TM) 6 Update 32", _ "Java(TM) 6 Update 32 (64-bit)", _ "Java(TM) 6 Update 5", _ "Java(TM) 6 Update 7", _ "Java(TM) 7 Update 3", _ "Java(TM) 7 Update 4", _ "Java(TM) 7 Update 4 (64-bit)"] $objWMIService = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") For $sSoftwareName In $aSoftwareNames $colSoftware = $objWMIService.ExecQuery ("Select * from Win32_Product Where Name = '" & $sSoftwareName & "'") For $objSoftware In $colSoftware $objSoftware.Uninstall() Next Next Exit(0) Надеюсь, я не нарушил логику)) Возможно причина ошибки из-за класса oSWbemObjectEx.Name, т.к. только в нем отличия... Тестировал на одной и той же виртуалке. |
Последний раз редактировалось HFShak, 12-07-2012 в 16:33. Отправлено: 15:49, 12-07-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, а ежели WSH попробовать:
что получится (выполняйте из-под командной строки посредством «cscript.exe»)? |
Отправлено: 09:11, 13-07-2012 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Цикл в Цикле | deamon7 | Скриптовые языки администрирования Windows | 5 | 15-04-2023 09:04 | |
.NET - цикл do-while c# | rom4ik_93@vk | Программирование и базы данных | 1 | 24-03-2012 01:11 | |
CMD/BAT - [решено] Цикл FOR | mark23 | Скриптовые языки администрирования Windows | 2 | 15-07-2011 10:52 | |
C/C++ - Задача на цикл. | Hardcore | Программирование и базы данных | 6 | 27-09-2010 18:00 | |
C/C++ - Цикл | ganselo | Программирование и базы данных | 4 | 31-10-2008 12:13 |
|