Share via


SWbemObject.Delete_ メソッド

SWbemObject オブジェクトの Delete_ メソッドでは、現在のクラスまたは現在のインスタンスを削除します。 動的プロバイダーからクラスまたはインスタンスが提供される場合、そのプロバイダーでクラスまたはインスタンスの削除がサポートされない限り、このオブジェクトを削除できないことがあります。 この構文の説明については、スクリプト API のドキュメント規則に関する記事を参照してください。

構文

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

パラメーター

iFlags [in, optional]

予約済みで、指定する場合は 0 (ゼロ) にする必要があります。

objwbemNamedValueSet [in、省略可能]

通常、このパラメータは未定義です。 そうでない場合、これは SWbemNamedValueSet オブジェクトであり、その要素は、要求を処理しているプロバイダーが使用できるコンテキスト情報を表します。 このような情報をサポートする、または必要とするプロバイダーは、認識された値名、値のデータ型、許可された値、セマンティクスを文書化する必要があります。

戻り値

このメソッドは値を返しません。

エラー コード

Delete_ メソッドの完了後、Err オブジェクトに次の一覧にあるいずれかのエラー コードが含まれる場合があります。

wbemErrAccessDenied - 2147749891 (0x80041003)

現在のコンテキストには、オブジェクトを削除するための適切なセキュリティ権限がありません。

wbemErrFailed - 2147749889 (0x80041001)

未定義のエラーが発生しました。

wbemErrInvalidClass - 2147749904 (0x80041010)

指定されたクラスが存在しません。

wbemErrInvalidOperation - 2147749910 (0x80041016)

オブジェクトを削除できません。

wbemErrNotFound - 2147749890 (0x80041002)

オブジェクトが存在しませんでした。

wbemErrOutOfMemory - 2147749894 (0x80041006)

操作を完了させるための十分なメモリがありません。

解説

SWbemObject の新しいインスタンスが作成されたが、キー プロパティに値が指定されていない場合、Delete_ メソッドは失敗します。 Windows Management Instrumentation (WMI) ではグローバル一意識別子 (GUID) 値を自動的に生成しますが、GUID 値は SWbemObject.Delete_では受け入れられません。 この場合、オブジェクト パスを使用する SWbemServices.Delete が機能します。 SWbemObjectPath オブジェクトは、オブジェクトが WMI にコミットされた後、SWbemObject.Put_ メソッドによって返されることに注意してください。

次の例では、新しいクラスの作成、キー プロパティの追加、リポジトリへの新しいクラスの書き込み、新しいクラス オブジェクトのパスの表示を行います。 その後、スクリプトによって新しいクラスのインスタンスが生成され、それを書き込み、パスを表示します。 スクリプトでは、クラスを削除するだけで、クラスとそのインスタンスの両方がリポジトリから削除されることに注意してください。

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

要件

要件
サポートされている最小のクライアント
Windows Vista
サポートされている最小のサーバー
Windows Server 2008
Header
Wbemdisp.h
タイプ ライブラリ
Wbemdisp.tlb
[DLL]
Wbemdisp.dll
CLSID
CLSID_SWbemObject
IID
IID_ISWbemObject