Removing a Single Item from a WMI Collection

One of the main purposes of accessing a collection is to remove an item from the collection. You can remove an item from a collection with a call to the SWbemPropertySet.Remove method. This method is not available for SWbemObjectSet or SWbemMethodSet.

Items are removed by name from SWbemPropertySet, SWbemQualifierSet, and SWbemNamedValueSet. However, items in SWbemRefresher are removed by index and from SWbemPrivilegeSet by the constant that represents the privilege name.

To remove an item from a collection

  • The following code example shows how to remove the item with a call to the SWbemPropertySet.Remove method.

    oclass.Properties_.Remove "Prop2"
    

    The following example creates a new class named "NewClass" in the root\default namespace and adds three properties to it. The script then uses the code from the previous example to delete the second property.

    ' Obtain an empty class and name it
    Const WBEM_CIMTYPE_STRING = 8
    Set objSWbemService = GetObject("winmgmts:root\default")
    Set objClass = objSWbemService.get()
    Wscript.Echo "Creating class NewClass"
    objClass.Path_.Class = "NewClass"
    
    ' Add three properties 
    For i = 1 to 3
        objClass.Properties_.Add "Prop" & i, WBEM_CIMTYPE_STRING
    Next
    Getprops()
    
    ' Remove the Prop2 property
    objClass.Properties_.Remove "Prop2"
    Wscript.Echo "Second property removed "
    Getprops()
    
    ' Write the changes to the class back
    objClass.Put_
    
    Sub Getprops()
        Wscript.Echo "Number of Properties = " _
            & objClass.Properties_.Count
        For Each prop in objClass.Properties_
            Wscript.Echo prop.name
        Next
    End Sub
    

For more information, see Manipulating Class and Instance Information, Accessing a Collection, and Removing Multiple Items from a Collection.