Share via


Método SWbemObject.Delete_

El método Delete_ del objeto SWbemObject elimina la clase o instancia actual. Si un proveedor dinámico proporciona la clase o instancia, a veces no es posible eliminar este objeto a menos que el proveedor admita la eliminación de clases o instancias. Para obtener una explicación de esta sintaxis, vea Convenciones de documentación para la API de scripting.

Sintaxis

SWbemObject.Delete_( _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

Parámetros

iFlags [in, optional]

Está reservado y debe ser 0 (cero) si se especifica.

objwbemNamedValueSet [in, optional]

Este parámetro normalmente no está definido. De lo contrario, se trata de un objeto SWbemNamedValueSet cuyos elementos representan la información de contexto que puede usar el proveedor que atiende la solicitud. Un proveedor que admita o necesite esa información debe documentar los nombres de valor reconocidos, el tipo de datos del valor, los valores permitidos y la semántica.

Valor devuelto

Este método no devuelve ningún valor.

Códigos de error

Después de completar el método Delete_, el objeto Err puede contener uno de los códigos de error de la lista siguiente.

wbemErrAccessDenied: 2147749891 (0x80041003)

El contexto actual no tiene derechos de seguridad adecuados para eliminar el objeto.

wbemErrFailed - 2147749889 (0x80041001)

Error no especificado.

wbemErrInvalidClass: 2147749904 (0x80041010)

La clase especificada no existe.

wbemErrInvalidOperation - 2147749910 (0x80041016)

No se puede eliminar el objeto.

wbemErrNotFound: 2147749890 (0x80041002)

El objeto no existía.

wbemErrOutOfMemory - 2147749894 (0x80041006)

No hay suficiente memoria para completar la operación.

Comentarios

Se produce un error en el método Delete_ si se crea una instancia de SWbemObject, pero no se proporciona ningún valor para la propiedad de clave. Instrumental de administración de Windows (WMI) genera automáticamente un valor de identificador único global (GUID), pero SWbemObject.Delete_ no acepta un valor GUID. En este caso, SWbemServices.Delete funciona porque usa la ruta de acceso del objeto. Tenga en cuenta que el método SWbemObject.Put_ devuelve un objeto SWbemObjectPath después de confirmar un objeto en WMI.

Ejemplos

En el ejemplo siguiente se crea una clase, se agrega una propiedad de clave, se escribe la nueva clase en el repositorio y se muestra la ruta de acceso del nuevo objeto de clase. A continuación, el script genera una instancia de la nueva clase, la escribe y muestra la ruta de acceso. Tenga en cuenta que el script elimina del repositorio la clase y sus instancias, para lo que simplemente elimina la clase.

On Error Resume Next
wbemCimtypeString = 8             ' String datatype
Set objSWbemService = GetObject("Winmgmts:root\default")
Set objClass = objSWbemService.Get()
objClass.Path_.Class = "NewClass"

' Add a property
' String property
objClass.Properties_.add "PropertyName", wbemCimtypeString 
' Make the property a key property 
objClass.Properties_("PropertyName").Qualifiers_.Add "key", TRUE

' Write the new class to the root\default namespace in the repository
Set objClassPath = objClass.Put_
wscript.echo objClassPath.Path

'Create an instance of the new class using SWbemObject.SpawnInstance
Set objNewInst = GetObject( _
    "Winmgmts:root\default:NewClass").SpawnInstance_

objNewInst.PropertyName = "My Instance"

' Write the instance into the repository
Set objInstancePath = objNewInst.Put_
wscript.echo objInstancePath.Path

' Remove the new class and instance from the repository
objClass.Delete_()
If Err <> 0 Then
    WScript.Echo Err.Number & "    " & Err.Description 
Else
    WScript.Echo "Delete succeeded"
End If

' Release SwbemServices object
Set objSWbemService = Nothing

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Encabezado
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
Archivo DLL
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject