SWbemLocator 对象

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

成员

SWbemLocator 对象包含以下类型的成员:

方法

SWbemLocator 对象具有这些方法。

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

属性

SWbemLocator 对象具有这些属性。

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

备注

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

还可以使用 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
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemLocator
IID
IID_ISWbemLocator

另请参阅

脚本 API 对象