SWbemServices オブジェクト

SWbemServices オブジェクトのメソッドを使用して、ローカル ホストまたはリモート ホストの名前空間に対して操作を実行できます。 このオブジェクトは、VBScript CreateObject 呼び出しでは作成できません。

メンバー

SWbemServices オブジェクトには、次の種類のメンバーがあります。

メソッド

SWbemServices オブジェクトには、これらのメソッドがあります。

メソッド 説明
AssociatorsOf 1 つ以上の関連付けクラスを使用して、指定したリソースに関連付けられているマネージド リソースのインスタンスを取得します。 元のエンドポイントのオブジェクト パスを指定すると、 関連付け元の エンドポイントでマネージド リソースが返されます。 AssociatorsOf メソッドは、"ASSOCIATORS OF" WQL クエリが実行するのと同じ関数を実行します。
AssociatorsOfAsync 指定したオブジェクトに関連付けられているオブジェクト (クラスまたはインスタンス) のコレクションを非同期的に返します。
削除 マネージド リソース (または CIM リポジトリからクラス定義) のインスタンスを削除します。
DeleteAsync オブジェクト パスで指定されたクラスまたはインスタンスを非同期的に削除します。
ExecMethod マネージド リソース クラス定義によって定義されたメソッドを実行する別の方法を提供します。 スクリプト言語でパラメーターがサポートされていない場合に主に使用されます。 たとえば、JScriptは out パラメーターをサポートしていません。
ExecMethodAsync メソッド プロバイダーによってエクスポートされるメソッドを非同期的に実行します。
ExecNotificationQuery イベント サブスクリプション クエリを実行してイベントを受信します。 イベント サブスクリプション クエリは、監視するマネージド環境への変更を定義するクエリです。 変更が発生すると、WMI インフラストラクチャは、呼び出し元のスクリプトへの変更を説明するイベントを配信します。
ExecNotificationQueryAsync イベントを受信するクエリを非同期的に実行します。
ExecQuery WMI マネージド リソース (またはクラス定義) のインスタンスのコレクションを取得するクエリを実行します。 ExecQuery を 使用して、 ExecQuery に渡されたクエリで定義した条件に一致するインスタンスのフィルター処理されたコレクションを取得できます。
ExecQueryAsync オブジェクトを取得するクエリを非同期的に実行します。
取得 オブジェクト パスに基づいて、マネージド リソース (またはクラス定義) の 1 つのインスタンスを取得します。
GetAsync オブジェクト パスに基づいて、クラス定義またはインスタンスであるオブジェクトを非同期的に取得します。
InstancesOf クラス名に基づいて、マネージド リソースのすべてのインスタンスを取得します。 既定では、 InstancesOf は詳細な取得を実行します。 つまり、 InstancesOf は、メソッドに渡されたクラス名で識別されるリソースのインスタンスを取得し、ターゲット クラスのサブクラス (下に定義) されているすべてのリソースのすべてのインスタンスも取得します。
InstancesOfAsync ユーザー指定の選択条件に従って、指定したクラスのインスタンスを非同期的に返します。
ReferencesTo 指定したリソースを参照するすべての関連付けを返します。 ReferencesTo を理解する最善の方法は、それを AssociatorsOf メソッドと比較することです。 AssociationorsOf は、関連付けの反対側にある動的リソースを返します。 ReferencesTo は 、関連付け自体を返します。 ReferencesTo メソッドは、"REFERENCES OF" WQL クエリが実行するのと同じ関数を実行します。
ReferencesToAsync 特定のクラスまたはインスタンスを参照するすべてのアソシエーション クラスまたはインスタンスのコレクションを非同期的に返します。
サブクラスOf CIM リポジトリから、指定したクラスのすべてのサブクラスを取得します。
サブクラスOfAsync 指定したクラスのサブクラスのコレクションを非同期的に返します。

プロパティ

SWbemServices オブジェクトには、これらのプロパティがあります。

プロパティ アクセスの種類 説明
Security_
読み取り専用
SWbemServices オブジェクトのセキュリティ設定を取得または設定するために使用します。

注釈

メソッドは、同期モード、非同期モード、または半同期モードで呼び出すことができます。 詳細については、 メソッドの呼び出しを参照してください。

概要

SWbemServices は、 2 つの主要な役割を果たします。 まず、 SWbemServices オブジェクトは、ターゲット コンピューター上の WMI 名前空間への認証済み接続を表します。 次 に、SWbemServices は、WMI で管理されるリソースを取得するために使用する Automation オブジェクトです。 SWbemServices オブジェクトへの参照は、次の 2 つの方法のいずれかで取得できます。

  • これまでに紹介したほとんどの WMI スクリプトで示したように、VBScript GetObject 関数を WMI モニカー "winmgmts:" と組み合わせて使用できます。 次の例は、WMI 接続の最も簡単な形式です。 この例では、ローカル コンピューターの既定の名前空間 (通常は "Root\CIMv2") に接続します。

    Set objSWbemServices = GetObject("winmgmts:")

  • SWbemLocator オブジェクト ConnectServer メソッドを使用して、SWbemServices オブジェクトへの参照を取得することもできます。

SWbemServices オブジェクトへの参照を取得した後、オブジェクト参照を使用して、SWbemServices を使用して使用可能な 18 個のメソッドのうち 1 つを呼び出します。 SWbemServices は、呼び出すメソッドに応じて、3 つの異なる WMI スクリプト ライブラリ オブジェクト (SWbemObjectSetSWbemObject、または SWbemEventSource) のいずれかを返すことができます。 各メソッドが返すオブジェクトの種類を知ることは、スクリプトで実行する必要がある次のステップを決定するのに役立ちます。 たとえば、 SWbemObjectSet を取得した場合は、コレクション内の各 SWbemObject にアクセスするためにコレクションを列挙する必要があります。 SWbemObject を取得した場合は、最初にコレクションを列挙することなく、オブジェクトのメソッドとプロパティにすぐにアクセスできます。

操作モード

SWbemServices では 、同期、非同期、半同期の 3 つの操作モードがサポートされています。

  • Synchronous。 同期モードでは、 SWbemServices メソッドが完了するまでスクリプトがブロック (一時停止) されます。 スクリプトは待機するだけでなく、WMI がマネージド リソースのインスタンスを取得する場合は、データの最初のバイトが呼び出し元のスクリプトに返される前に、メモリ内に SWbemObjectSet 全体をビルドします。 これにより、スクリプトのパフォーマンスと、スクリプトを実行しているコンピューターに悪影響を及ぼす可能性があります。 たとえば、Windows イベント ログから何千ものイベントを同期的に取得すると、時間がかかり、大量のメモリを使用する場合があります。 これらの理由から、同期操作は、既定で同期する 3 つのメソッド (DeleteExecMethodおよび Get) を除いて推奨されません。 これらのメソッドは大きなデータ セットを返さないので、半同期操作は必要ありません。

  • [非同期] 。 非同期モードでは、スクリプトは 9 つの非同期メソッドのいずれかを呼び出し、直ちに返します。 つまり、非同期メソッドが呼び出されるとすぐに、スクリプトは次のコード行の実行を再開します。 非同期メソッドを使用するには、スクリプトで最初に SWbemSink オブジェクトとイベント ハンドラーと呼ばれる特殊なサブルーチンを作成する必要があります。 WMI は非同期操作を実行し、操作の完了時にイベント ハンドラー サブルーチンを呼び出してスクリプトに通知します。

  • 半同期。 半同期モードは、同期と非同期の間の侵害です。 準同期操作は同期操作よりも優れたパフォーマンスを提供しますが、非同期操作を処理するために必要な追加の知識とスクリプト手順は必要ありません。 これは、ほとんどの WMI クエリの既定の操作の種類です。

    半同期モードでは、スクリプトは 6 つのデータ取得メソッドのいずれかを呼び出し、直ちに返します。 スクリプトの実行が続行されると、WMI はバックグラウンドでマネージド リソースを取得します。 リソースが取得されると、SWbemObjectSet を使用してスクリプトにすぐに返されます。 コレクション全体がアセンブルされるのを待たずに、マネージド リソースへのアクセスを開始できます。

    CIM_DataFileWin32_NTLogEventなど、多数のインスタンス (1,000 を超える多くの意味) を持つマネージド リソースを操作する場合、半同期操作には注意が必要です。 注意は、WMI がマネージド リソースのインスタンスを処理する方法の結果です。 マネージド リソースのインスタンスごとに、WMI は SWbemObject オブジェクトを作成してキャッシュします。 マネージド リソースに多数のインスタンスが存在する場合、インスタンスの取得によって使用可能なリソースが独占され、スクリプトとコンピューターの両方のパフォーマンスが低下する可能性があります。

    この問題を回避するには、 wbemFlagForwardOnly フラグを使用して半同期メソッド呼び出しを最適化できます。 wbemFlagForwardOnly フラグと wbemFlagReturnImmediately フラグ (既定の半同期フラグ) を組み合わせることで、WMI に転送専用の SWbemObjectSet を返すように指示します。これによって、大きなデータ セットのパフォーマンスの問題が解消されます。 ただし、 wbemFlagForwardOnly フラグを使用するとコストが発生します。 前方のみの SWbemObjectSet は 、1 回だけ列挙できます。 転送専用 SWbemObjectSet 内の各 SWbemObject にアクセスすると、インスタンスに割り当てられたメモリが解放されます。

DeleteExecMethodGet、および 9 つの非同期メソッドを除き、半同期は既定で推奨される操作モードです。

一般的に使用されるメソッド

システム管理スクリプトで最もよく使用されるメソッドは 、InstancesOfExecQueryGetExecNotificationQuery です。 よく使用されますが、 InstancesOf は必ずしも情報を取得するための推奨される方法ではありません (間違いなく最も簡単な方法です)。

要件

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

こちらもご覧ください

API オブジェクトのスクリプト作成

メソッドの呼び出し