SWbemLocator オブジェクト

SWbemLocator オブジェクトのメソッドを使うと、ローカル コンピューター上またはリモート ホスト コンピューター上の名前空間への接続を表す SWbemServices オブジェクトを取得できます。 その後、SWbemServices オブジェクトのメソッドを使って、WMI にアクセスできます。 このオブジェクトは、VBScript の CreateObject を呼び出して作成できます。

メンバー

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

メソッド

SWbemLocator オブジェクトには、次のメソッドがあります。

メソッド 説明
ConnectServer 指定されたコンピューター上の WMI に接続します。

プロパティ

SWbemLocator オブジェクトには、次のプロパティがあります。

プロパティ アクセスの種類 説明
Security_
読み取り専用
セキュリティ設定の読み取りまたは変更に使用します。

解説

WMI スクリプト ライブラリ オブジェクト モデルの最上位には、SWbemLocator オブジェクトがあります。 WMI への認証された接続を確立するために VBScript の GetObject 関数と WMI モニカー "winmgmts:" が使われるのと同じように、SWbemLocator は WMI 名前空間への認証された接続を確立するために使われます。 ただし、SWbemLocator は、GetObject と WMI モニカーを使用して実行できない 2 つの特定のスクリプト シナリオに対処するように設計されています。 次のことを行う必要がある場合は、SWbemLocator を使う必要があります。

  • リモート コンピューター上の WMI に接続するために、ユーザーとパスワードの資格情報を提供します。 GetObject 関数で使われる WMI モニカーには、資格情報を指定するためのメカニズムは含まれていません。 WMI のほとんどのアクティビティ (リモート コンピューターで実行されるすべてのものを含む) には、管理者権限が必要です。 通常、管理者アカウントではなく通常のユーザー アカウントを使ってログオンする場合は、代替資格情報でスクリプトを実行しない限り、ほとんどの WMI タスクを実行することはできません。
  • Web ページ内から WMI スクリプトを実行している場合に、WMI に接続します。 インターネット エクスプローラーではセキュリティ上の理由から GetObject の使用が禁止されているため、HTML ページ内に埋め込まれたスクリプトを実行するときに、GetObject 関数を使用できません。

さらに、GetObject で使われる WMI 接続文字列がわかりにくい場合や難しい場合は、SWbemLocator を使って WMI に接続することが必要な場合があります。

SWbemLocator への参照を作成するには、GetObject ではなく CreateObject を使います。 参照を作成するには、次のスクリプト サンプルの 2 行目で示すように、CreateObject 関数に SWbemLocator プログラム識別子 (ProgID) "WbemScripting.SWbemLocator" を渡す必要があります。 SWbemLocator オブジェクトへの参照を取得した後、ConnectServer メソッドを呼び出して WMI に接続し、SWbemServices オブジェクトへの参照を取得します。 これは、次のスクリプトの 3 行目で示されています。

strComputer = "."
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Name: " & objSWbemObject.Name
Next

代替資格情報でスクリプトを実行するには、ConnectServer に渡される追加パラメーターとしてユーザー名とパスワードを含めます。 たとえば、次のスクリプトは、ユーザー名が kenmyer でパスワードが homerrj である資格情報を使って実行します。

strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root\cimv2", "kenmyer", "homerj")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Name: " & objSWbemObject.Name
Next

<ドメイン>\<ユーザー名> の形式を使って、ユーザー名を指定することもできます。 次に例を示します。

" fabrikam\kenmyer"

次の PowerShell の例では、SWbemLocator を使ってサーバーに接続します。

$NameSpace = 'root\ccm'
$ComputerName = 'sccm.company.com'
$WbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$WbemServices = $WbemLocator.ConnectServer($ComputerName, $Namespace)
$WbemClasses = $WbemServices.SubclassesOf()
$WbemClasses

要件

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

関連項目

スクリプト API オブジェクト