构造名字对象字符串

名字对象字符串格式类似于标准 WMI 对象路径的格式。 有关详细信息,请参阅 WMI 对象路径要求

名字对象由以下部分组成:

  • 前缀 WinMgmts:(必需)。 前缀告知 Windows 脚本宿主 (WSH) 以下代码将使用脚本 API 对象
  • 安全设置组件(可选)
  • WMI 对象路径组件(可选)

不能在 WMI 名字对象字符串中指定密码。 如果必须在连接到 WMI 时更改密码(strPassword 参数)或身份验证类型(strAuthority 参数),请调用 SWbemLocator.ConnectServer。 请注意,只能在与远程计算机的连接中指定密码和授权。 尝试在本地计算机上运行的脚本中设置这些参数会导致错误。 有关何时使用安全设置和对象路径组件的详细信息,请参阅 WMI 安全设置

以下名字对象指定代表 root\default 命名空间的 SWbemServices 对象,该对象启用了模拟和 wbemPrivilegeDebug (SeDebugPrivilege) 权限,并禁用了 wbemPrivilegeSecurity (SeSecurityPrivilege) 权限。

"winmgmts:{impersonationLevel=impersonate," & "(debug,!security)}!root\default"

注意

所有字符串文本都不区分大小写。

权限的“!”前缀表示将禁用该权限;省略此前缀表示启用该权限。

在计算机名称或命名空间前面的方括号中指定安全设置时,需要为计算机名称或命名空间使用“!”前缀。

 

指定对象路径时允许以下默认分配:

  • 可以在对象路径中省略计算机名称,在这种情况下,将采用本地计算机名称。

  • 可以在对象路径中省略命名空间,在这种情况下,将采用默认命名空间。

    此项由注册表项 HKEY_LOCAL_MACHINE\Software\Microsoft\WBEM\Scripting\Default Namespace 的值决定,默认值为“Root\CIMv2”。

  • 还可以指定类或实例,在这种情况下,返回的对象是 WMI 对象而不是服务对象。

注意

如果指定了类或实例,则在指定计算机名称时不能省略命名空间。

 

有关 WMI 名字对象字符串中使用的权限常量的参考,请参阅权限常量和“脚本短名称”描述符。

有效的名字对象字符串

以下示例显示了有效的名字对象字符串。

以下名字对象标识本地计算机上的默认命名空间。 返回 SWbemServices 对象。

WinMgmts:

以下名字对象标识计算机 myServer 上的默认命名空间。 返回 SWbemServices 对象。

"WinMgmts://myServer"

以下名字对象标识 myServer 计算机上的 root\cimv2 命名空间。 返回 SWbemServices 对象。

"WinMgmts://myServer/root/cimv2"

以下名字对象标识本地服务器上的 root\cimv2 命名空间。 返回 SWbemServices 对象。

"WinMgmts:root/cimv2"

以下名字对象标识 myServer 服务器上 root\cimv2 命名空间中的 Win32_LogicalDisk 类。 返回 SWbemObject 对象。

"WinMgmts:{impersonationLevel=impersonate}" _
    & "!//myServer/root/cimv2:Win32_LogicalDisk"

以下名字对象标识本地服务器上 root\cimv2 命名空间中的 Win32_LogicalDisk 类。 返回 SWbemObject 对象。

"WinMgmts:{impersonationLevel=impersonate}" & "!root/cimv2:Win32_LogicalDisk"

以下名字对象标识本地服务器上默认命名空间中的 Win32_LogicalDisk 类。 返回 SWbemObject 对象。

"WinMgmts:{impersonationLevel=impersonate}" & "!Win32_LogicalDisk"

以下名字对象标识与本地服务器上驱动器 C: 中默认脚本命名空间对应的 Win32_LogicalDisk 实例。 返回 SWbemObject 对象。 脚本的默认命名空间由 WMI 控件中指定的默认命名空间配置设置确定。 有关详细信息,请参阅使用 WMI 控件设置命名空间安全性

"WinMgmts::Win32_LogicalDisk='C:'"

以下名字对象标识与 myServer 服务器上驱动器 C: 中 root\cimv2 命名空间对应的 Win32_LogicalDisk 实例。 返回 SWbemObject 对象。

"WinMgmts:{impersonationLevel=impersonate}" & "!//myServer/root/cimv2:Win32_LogicalDisk="C:""

以下名字对象标识与本地服务器上驱动器 C: 中 root\cimv2 命名空间对应的 Win32_LogicalDisk 实例。 返回 SWbemObject 对象。

"WinMgmts:{impersonationLevel=impersonate}" & "!root/cimv2:Win32_LogicalDisk="C:""

以下名字对象标识与本地服务器上驱动器 C: 中默认命名空间对应的 Win32_LogicalDisk 实例。 返回 SWbemObject 对象。

"WinMgmts:{impersonationLevel=impersonate}" & "!Win32_LogicalDisk="C:""

以下名字对象将模拟级别设置为模拟并设置 SE_DEBUG 权限。

"WinMgmts:{impersonationLevel=impersonate, (Debug)}"

以下名字对象将模拟级别设置为模拟并设置 SE_DEBUG 权限。 它还会撤销 SE_SHUTDOWN 权限。

"WinMgmts:{impersonate,(Debug,!Shutdown)}"

以下名字对象从 root\wmi 命名空间中检索 myclass 类的美式英语本地化说明。

"WinMgmts:[locale=ms_409]!root/wmi:myclass"

以下名字对象使用主体 mydomain\server 请求 Kerberos 身份验证。

"Winmgmts:{impersonationLevel=delegate," _
    & "authority=kerberos:mydomain\server}" _
    & "!//myserver/root/default:__cimomidentification=@"

以下名字对象使用 mydomain 域请求 NTLM 身份验证。

"Winmgmts:{impersonationLevel=impersonate," & _
    "authority=ntlmdomain:mydomain} " & _
    "!//myserver/root/default:__cimomidentification=@

以下 VBScript 代码示例演示如何在名字对象中组合安全性和区域设置参数。

'*****************************************************************
'   Name    :  Moniker.vbs
'
'   Purpose :  This example shows how to set various 
'              parameters in a moniker. 
'****************************************************************

Set myobj = GetObject("WINMGMTS:" _
            & "{impersonationLevel=impersonate," _
            & "authenticationLevel=pktPrivacy," _
            & "authority=ntlmdomain:mydomain," _
            & "(Debug,!Shutdown)}" _
            & "[locale=ms_409]" _
            & "!\\User1\ROOT\CIMV2:Win32_LogicalDisk=""C:""")

wscript.echo "File system = " & myobj.filesystem

注意

尽管名字对象提供对对象更直接的访问,但在某些情况下,重复使用名字对象的效率可能低于显式连接到 WMI 的等效代码。 如果应用程序性能是一个考虑因素,建议使用替代机制。

在运行 HTML 页面中嵌入的脚本时,无法使用 VBScript 提供的 GetObject 函数来更新或设置数据,因为 Microsoft Internet Explorer 出于安全原因拒绝使用这种调用。