![]() |
![]() |
![]() |
|
1С+WMI Помогите кто чем может.... не могу перебрать коллекцию Ø |
☑ | ||
---|---|---|---|---|
0
дядя Вася
04.04.05
✎
12:18
|
Locator=СоздатьОбъект("WbemScripting.SWbemLocator");
Компьютер = Locator.ConnectServer(СетевоеИмя); Коллекция = Компьютер.ExecQuery("Select * from Win32_Product"); вопрос в том, как пройтись по коллекции? Метод Item почему-то не работает..... HELP...... |
|||
1
Денис2
04.04.05
✎
12:19
|
А такой метод есть? Если нет, то только V8 и для каждого...
|
|||
2
Палыч
04.04.05
✎
12:35
|
SWbemObjectSet.Item(strObjectPath)
strObjectPath - путь к объекту в виде строки. Так что только через скрипт. |
|||
3
Gloom
04.04.05
✎
12:44
|
В данном случае лучше WindowsInstaller юзать - и проще, и шустрее...
|
|||
4
slavka
04.04.05
✎
12:53
|
Мож это чем поможет:
Const wbemImpersonationLevelDelegate = 4 Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objConnection = objwbemLocator.ConnectServer _ ("WebServer", "root\cimv2", "fabrikam\administrator", _ "password", , "kerberos:WebServer") objConnection.Security_.ImpersonationLevel = wbemImpersonationLevelDelegate Set objSoftware = objConnection.Get("Win32_Product") errReturn = objSoftware.Install("\\atl-dc-02\scripts\1561_lab.msi",,True) Wscript.Echo errReturn |
|||
5
дядя Вася
04.04.05
✎
12:57
|
(4)Мне нужно получить список установленного ПО. Но т.к. нету For Each ... в 1С сделать этого не могу.
|
|||
6
slavka
04.04.05
✎
13:01
|
(5) ну тады мож это:
Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.CreateTextFile("c:\scripts\software.tsv", True) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colSoftware = objWMIService.ExecQuery _ ("Select * from Win32_Product") objTextFile.WriteLine "Caption" & vbtab & _ "Description" & vbtab & "Identifying Number" & vbtab & _ "Install Date" & vbtab & "Install Location" & vbtab & _ "Install State" & vbtab & "Name" & vbtab & _ "Package Cache" & vbtab & "SKU Number" & vbtab & "Vendor" & vbtab _ & "Version" For Each objSoftware in colSoftware objTextFile.WriteLine objSoftware.Caption & vbtab & _ objSoftware.Description & vbtab & _ objSoftware.IdentifyingNumber & vbtab & _ objSoftware.InstallDate2 & vbtab & _ objSoftware.InstallLocation & vbtab & _ objSoftware.InstallState & vbtab & _ objSoftware.Name & vbtab & _ objSoftware.PackageCache & vbtab & _ objSoftware.SKUNumber & vbtab & _ objSoftware.Vendor & vbtab & _ objSoftware.Version Next objTextFile.Close или вот это: strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colFeatures = objWMIService.ExecQuery _ ("Select * from Win32_SoftwareFeature") For each objFeature in colfeatures Wscript.Echo "Accesses: " & objFeature.Accesses Wscript.Echo "Attributes: " & objFeature.Attributes Wscript.Echo "Caption: " & objFeature.Caption Wscript.Echo "Description: " & objFeature.Description Wscript.Echo "Identifying Number: " & objFeature.IdentifyingNumber Wscript.Echo "Install Date: " & objFeature.InstallDate Wscript.Echo "Install State: " & objFeature.InstallState Wscript.Echo "LastUse: " & objFeature.LastUse Wscript.Echo "Name: " & objFeature.Name Wscript.Echo "ProductName: " & objFeature.ProductName Wscript.Echo "Vendor: " & objFeature.Vendor Wscript.Echo "Version: " & objFeature.Version Next |
|||
7
дядя Вася
04.04.05
✎
13:57
|
(6) ты это в 1С напиши. Там цикла FOR EACH нету..............
|
|||
8
slavka
04.04.05
✎
14:02
|
а ты из 1С можешь скрипт запустить. В скрипте скидывать в текстовый файл и уже из 1С парсить ентот файлик слабо? :)
|
|||
9
Gloom
04.04.05
✎
14:03
|
(7)Если надо только локально работать - см.(3)...
|
|||
10
дядя Вася
04.04.05
✎
14:09
|
всем спасибо....
|
|||
11
Палыч
04.04.05
✎
14:10
|
(0) Вот тебе индексатор словаря:
функция getIndexed(dic) перем sc ; sc = СоздатьОбъект("MSScriptControl.ScriptControl"); sc.Language = "JScript"; sc.AddCode(" |function getIndexed(dic) |{ | var | e = new Enumerator(dic), | coll = new ActiveXObject(""Scripting.Dictionary"") | ; | | for (i = 1; !e.atEnd(); e.moveNext(), i++) coll.Add(i, e.item()); | | return coll; |} |" ); возврат sc.Modules("Global").CodeObject.getIndexed(dic); конецФункции |
|||
12
дядя Вася
04.04.05
✎
14:32
|
11) Дай бог тебе здоровья и хорошую любовницу
|
|||
13
SiAl
04.04.05
✎
14:55
|
(0) Я конечно не очень силен в объектной технике, но обычно у всех коллекций есть метод, возвращающий количество элементов и метод, получающий элемент коллекции по индексу. Может порыть в этом направлении, что то вроде Count и Item. Надо только помнить что коллеция нумеруется с нуля.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |