Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Si intenta quitar más de un elemento de una colección, es posible que no se quiten algunos elementos. No se puede iterar una colección al quitar elementos, ya que cuando se quita un elemento de una colección, el puntero de colección se mueve al elemento siguiente. Por ejemplo, un intento de quitar todos los elementos de una colección da como resultado la eliminación de todos los demás elementos. Es posible que vea este problema al quitar elementos con los métodos SWbemQualifierSet.Remove o SWbemPropertySet.Remove. Para evitar este problema, recorra la colección y coloque los nombres de los elementos que se van a quitar en una matriz. A continuación, puede recorrer la matriz y eliminar los elementos denominados en la matriz. Las colecciones, como SWbemNamedValueSet, SWbemPrivilegeSety SWbemRefresher, también tienen un método que elimina todos los elementos del contenedor del actualizador.
El siguiente script muestra cómo quitar varios elementos de una colección.
Const WBEM_CIMTYPE_STRING = 8 ' Value for string data type
Dim names()
Redim names (0)
set objSWbemService = GetObject("winmgmts:root\default")
set objClass = ObjSWbemService.Get()
Wscript.Echo "Creating class NewClass"
objClass.Path_.Class = "NewClass"
For i = 1 to 5
objClass.Properties_.Add "Prop" & i, WBEM_CIMTYPE_STRING
Next
objClass.Put_
Getprops()
' Get all the property names in an array
For Each oprop in objClass.properties_
Redim Preserve names(Ubound(names)+1)
names(Ubound(names)-1) = oprop.name
Next
Wscript.Echo "Remove first 3 properties using array of names:"
For i = Lbound(names) to Ubound(names)-1
If (i < 3) Then
Wscript.Echo "Removing " & names(i)
objClass.Properties_.Remove names(i)
End If
Next
objClass.Put_
Wscript.Echo "Result:"
Getprops()
Sub Getprops()
Wscript.Echo "Number of properties = " _
& objClass.Properties_.Count
For Each oprop in objClass.Properties_
Wscript.Echo oprop.name
Next
End Sub
No se pueden quitar propiedades y calificadores en una instancia de clase o una clase derivada que tenga propiedades heredadas. Este intento de eliminación genera un error y no se quita la propiedad o calificador; en su lugar, WMI restablece la propiedad o calificador al valor predeterminado. En el caso de una clase derivada con propiedades heredadas, WMI restablece la propiedad heredada al valor predeterminado de la propiedad en la clase primaria.
Para obtener más información, vea manipular la información de clase e instancia, acceder a una coleccióny quitar un solo elemento de una colección.