SWbemLocator オブジェクト

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

メンバー

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

メソッド

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

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

プロパティ

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

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

注釈

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

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

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

GetObject ではなく CreateObject を使用して、SWbemLocator への参照を作成します。 参照を作成するには、次のスクリプト サンプルの 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 というユーザーの資格情報で、パスワード homerj を使用して実行されます。

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

Domain\User Name 形式を使用してユーザー名を指定することもできます。 次に例を示します。

" 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 オブジェクトのスクリプト作成