构造名字对象字符串
名字对象字符串格式类似于标准 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 出于安全原因拒绝使用这种调用。