SWbemLocator 对象

可以使用 SWbemLocator 对象的方法获取 SWbemServices 对象,该对象表示与本地计算机或远程主计算机上命名空间的连接。 然后,可以使用 SWbemServices 对象的方法访问 WMI。 此对象可以通过 VBScript CreateObject 调用创建。

成员

SWbemLocator 对象具有以下类型的成员:

方法

SWbemLocator 对象具有这些方法。

方法 说明
ConnectServer 连接到指定计算机的 WMI。

属性

SWbemLocator 对象具有这些属性。

属性 访问类型 说明
安全_
只读
用于读取或更改安全设置。

备注

WMI 脚本库对象模型的顶部是 SWbemLocator 对象。 SWbemLocator 用于与 WMI 命名空间建立经过身份验证的连接,与 VBScript GetObject 函数和 WMI 名字对象"winmgmts:"用于建立与 WMI 的身份验证连接一样。 但是,SWbemLocator 旨在解决两个无法使用 GetObject 和 WMI 名字对象执行的特定脚本方案。 如果需要:必须使用 SWbemLocator:

  • 提供用户和密码凭据以连接到远程计算机的 WMI。 与 GetObject 函数一同使用的 WMI 名字对象不包括用于指定凭据的机制。 大多数 WMI (包括在需要管理员权限的远程) 执行的所有活动。 如果通常使用常规用户帐户而不是管理员帐户登录,除非在备用凭据下运行脚本,否则将无法执行大多数 WMI 任务。
  • 连接网页中运行 WMI 脚本,则向 WMI 进行调用。 运行嵌入在 HTML 页中的脚本时,不能使用 GetObject 函数,因为Internet Explorer出于安全原因,不允许使用 GetObject。

此外,如果发现用于 GetObject 的 WMI 连接字符串令人困惑或困难,可能需要使用 SWbemLocator 连接到 WMI。

使用 CreateObject 而不是 GetObject 创建对 SWbemLocator 的引用。 若要创建引用,必须传递 CreateObject 函数 SWbemLocator 编程标识符 (ProgID) "WbemScripting.SWbemLocator",如以下脚本示例的第 2 行所示。 获取对 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

还可使用"域 \ 用户名"格式指定用户名。 例如:

" 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
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID _ SWbemLocator
IID
IID _ ISWbemLocator

另请参阅

编写 API 对象的脚本