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