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 |
|
タイプ ライブラリ |
|
[DLL] |
|
CLSID |
CLSID_SWbemLocator |
IID |
IID_ISWbemLocator |