Доступ к свойствам коллекции, без использования for ... каждого цикла, в VBScript - PullRequest
0 голосов
/ 02 января 2012

В настоящее время у меня есть приведенный ниже код, но, очевидно, я не настолько опытен в работе с коллекциями.Следовательно, я не могу понять, как получить каждое значение имени из свойства правила в каждом цикле цикла.

dim c,ExistingRules
set objFWP = createobject("HNetCfg.FwPolicy2")
set colRules = objFWP.rules

for c = 1 to colRules.count - 1
   ExistingRules = ExistingRules & colRules(c).name
next

Вместо colRules(c).name я пробовал такие вещи, как:

  • colRules.item(c).name
  • colRules.name(c)
  • t = colRules.name / t(c)

... и т. Д.

Несмотря на исследованиякак перебирать коллекцию без ... для каждого в Интернете, и узнавать больше о том, как работать с коллекциями, я уверен, что сообщество может помочь мне с решением / источниками для более быстрого изучения.

Ответы [ 2 ]

3 голосов
/ 02 января 2012

Объект Rules является экземпляром интерфейса COM INetFwRules.Оказывается, нет способа извлечь элемент из этой коллекции по индексу.Определение метода Item показывает, что он получает правило по name .Таким образом, в данном конкретном случае вы должны использовать For Each ... In.

Dim rule
For Each rule In colRules
   WScript.Echo "Rule: " & rule.Name
Next

Если вы хотите разорвать цикл раньше, а затем пересчитать, вам нужно переназначитьсборник правил:

Dim rule
Dim colRules

Set colRules = objFWP.Rules
WScript.Echo "Loop first time..."
For Each rule In colRules
   WScript.Echo "Rule: " & rule.Name
   Exit For
Next

' Reassign colRules
Set colRules = objFWP.Rules
WScript.Echo "Loop again..."
For Each rule In colRules
   WScript.Echo "Rule: " & rule.Name
   Exit For
Next
0 голосов
/ 10 сентября 2013
set objFWP = createobject("HNetCfg.FwPolicy2")
set colRules = objFWP.rules

' because index in VBScript is zero based
for c = 0 to colRules.count - 1
   'assuming name is one of the property for items in the collection 
   ExistingRules = ExistingRules & colRules.ItemIndex(c).name 
next
...