使用 VBScript 设置身份验证服务

使用脚本访问 Windows Management Instrumentation (WMI) 服务器时,可以选择 NT LAN Manager (NTLM) 或 Kerberos 身份验证协议。 除非使用委托,否则不需要指定 Kerberos。 有关详细信息,请参阅连接到第三个计算机委托

由于操作系统版本在使用的身份验证服务方面有所不同,因此建议你在连接到远程系统时不要为 authority 字段指定值, 而应允许组件对象模型 (DCOM) 的操作系统和分布式版本选择 NTLM 或 Kerberos。 如果指定了身份验证服务,则语法需要服务器主体名称,该名称是目标计算机的名称,而不是域控制器的名称。

只能在连接到远程 WMI 服务器时使用 authority 参数。 如果尝试将授权级别设置为名字对象的一部分或通过调用 SWbemLocator.ConnectServer 进行本地连接,连接尝试将失败。

执行以下过程,以指定要在 SWbemLocator.ConnectServer 方法或名字对象字符串连接的 strAuthority 参数中使用的身份验证服务。

使用 WMI 脚本 API 指定 NTLM 或 Kerberos 身份验证

  1. 如果 strAuthority 参数以字符串“kerberos:”开头,WMI 会假定该字符串指的是 Kerberos 主体名称,因此会使用 Kerberos 身份验证。 如果 strAuthority 参数以字符串“ntlmdomain:”开头,WMI 会改用 NTLM 身份验证。

  2. 你也可以使用名字对象的 authority 部分来指定用于连接到 WMI 的身份验证类型。 若要在使用名字对象时使用 Kerberos 身份验证,请包括字符串“authority=kerberos:”,后跟主体名称。 若要使用 NTLM 身份验证,请包括字符串“authority=ntlmdomain:”,后跟 NTLM 域名。

    以下示例展示了一个名字对象,该名字对象使用主体“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=@