SWbemServices.Delete メソッド
SWbemServices オブジェクトの Delete メソッドは、オブジェクト パスで指定されたクラスまたはインスタンスを削除します。 現在の名前空間内のオブジェクトのみを削除できます。
動的プロバイダーからクラスまたはインスタンスが提供される場合でも、そのプロバイダーでクラスまたはインスタンスの削除がサポートされない限り、このオブジェクトを削除することはできません。
メソッドは、同期モードで呼び出されます。 詳細については、「メソッドの呼び出し」を参照してください。
この構文の説明については、「スクリプト API のドキュメント規則」を参照してください。
構文
SWbemServices.Delete( _
ByVal strObjectPath, _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ] _
)
パラメーター
-
strObjectPath
-
必須。 削除するオブジェクトへのオブジェクト パスを含む文字列。 詳細については、「WMI オブジェクトの場所を説明する」を参照してください。
-
iFlags [省略可能]
-
予約済み。 必ずゼロを指定します。
-
objWbemNamedValueSet [オプション]
-
通常、これは未定義です。 そうでない場合は、要求を処理するプロバイダーで使用できるコンテキスト情報を表す要素を持つ SWbemNamedValueSet オブジェクトです。 このような情報をサポートする、または必要とするプロバイダーは、認識された値名、値のデータ型、許可された値、セマンティクスを文書化する必要があります。
戻り値
このメソッドは値を返しません。
エラー コード
Delete メソッドの完了後、Err オブジェクトに次の一覧にあるいずれかのエラー コードが含まれる場合があります。
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
現在のコンテキストには、オブジェクトを削除するための適切なセキュリティ権限がありません。
-
wbemErrFailed - 2147749889 (0x80041001)
-
未定義のエラーが発生しました。
-
wbemErrInvalidClass - 2147749904 (0x80041010)
-
指定されたクラスが存在しません。
-
wbemErrInvalidOperation - 2147749910 (0x80041016)
-
オブジェクトを削除できません。
-
wbemErrNotFound - 2147749890 (0x80041002)
-
オブジェクトが存在しません。
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
操作を完了させるための十分なメモリがありません。
解説
SWbemServices.Delete メソッドは、入力としてオブジェクト パスのみを必要とするため、オブジェクトのキー プロパティに値が指定されていない場合にも使用できます。 このメソッドは、キー値がない SWbemObject.Delete_ が失敗する状況でも使用できます。 オブジェクトが SWbemObject.Put_を介して WMI にコミットされる場合、SWbemObjectPath オブジェクトは呼び出しによって取得されます。
例
次の例では、新しいクラスの作成、キーがないプロパティの追加、リポジトリへの新しいクラスの書き込み、新しいクラス オブジェクトのパスの表示を行います。 その後、スクリプトによって新しいクラスのインスタンスが生成され、そのインスタンスを書き込み、パスを表示します。 スクリプトでは、クラスを削除することで、クラスとそのインスタンスの両方がリポジトリから削除されることに注意してください。 WMI クラスとインスタンスの詳細については、「クラスとインスタンス情報の操作」および「Common Information Model」を参照してください。
wbemCimtypeSint32 = 3
Set objSWbemService = GetObject("Winmgmts:root\default")
Set objClass = objSWbemService.Get()
objClass.Path_.Class = "NewClass"
' Add a property
' Integer property
objClass.Properties_.Add "iProperty", wbemCimtypeSint32
objClass.Properties_("iProperty").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.iProperty = 1000
' Write the instance into the repository
Set objInstancePath = objNewInst.Put_
wscript.echo objInstancePath.Path
' Remove the new class and instance from the repository
objSWbemService.Delete("NewClass")
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 |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |