描述
SWbemLocator对象的ConnectServer方法连接到在strServer参数中指定的计算机上的命名空间。目标计算机可以是本地或远程的,但必须安装WMI。有关示例和与连接器类型的比较,请参阅创建WMI脚本.
从Windows Vista开始,SWbemLocator.ConnectServer可以使用strServer参数中的IPv6地址与运行IPv6的计算机连接。有关详细信息,请参阅WMI中的IPv6和IPv4支持.
Windows Server 2003,Windows XP和Windows 2000: 您只能使用SWbemLocator.ConnectServer连接到具有IPv4地址的计算机。
PowerBASIC 语法
METHOD ConnectServer ( _ OPTIONAL BYVAL strserver AS WSTRING, _ OPTIONAL BYVAL strNamespace AS WSTRING, _ OPTIONAL BYVAL strUser AS WSTRING, _ OPTIONAL BYVAL strPassword AS WSTRING, _ OPTIONAL BYVAL strLocale AS WSTRING, _ OPTIONAL BYVAL strAuthority AS WSTRING, _ OPTIONAL BYVAL iSecurityFlags AS LONG, _ OPTIONAL BYVAL objWbemNamedValueSet AS IDispatch _ ) AS ISWbemServices |
参数
strServer
要连接的计算机名称。如果远程计算机与您登录的用户帐户不同,请使用完全限定的计算机名称。如果您不提供此参数,则该通话默认为本地计算机。
示例:server1.network.fabrikam
您也可以在此参数中使用IP地址。如果IP地址为IPv6格式,则目标计算机必须运行IPv6。IPv4中的地址看起来像111.222.333.444
IPv6格式的IP地址看起来像2010:836B:4179::836B:4179
strNamespace
指定您要登录的命名空间的字符串。例如,要登录到root \\ default命名空间,请使用root \\ default。如果不指定此参数,则默认为配置为脚本的默认命名空间的命名空间。有关详细信息,请参阅创建WMI应用程序或脚本.
示例:“root \\ CIMV2”
strUser
要用于连接的用户名。字符串可以是用户名或域\\用户名的形式。将此参数留空以使用当前的安全上下文。Strus参数只能用于与远程WMI服务器的连接。如果尝试为本地WMI连接指定strUser,则连接尝试失败。如果Kerberos身份验证正在使用,则不能在网络中拦截Strus和strPassword中指定的用户名和密码。您可以使用UPN格式指定Strus.
示例:“DomainName \\ UserName”
Windows 2000,Windows NT 4.0和Windows Me / 98/95:无法以UPN格式指定Strus.
注意如果strAuthorityen中指定了域名,则不能在此处指定域。在两个参数中指定域会导致无效参数错误。
strPassword
指定尝试连接时要使用的密码的字符串。将参数留空以使用当前的安全上下文。strPassword参数只能用于与远程WMI服务器的连接。如果尝试为本地WMI连接指定strPassword,连接尝试将失败。如果Kerberos身份验证正在使用,则Strus和strPassword中指定的用户名和密码不能在网络上拦截。
strLocale
指定本地化代码的字符串。如果要使用当前的语言环境,请将其留空。如果不是空白,则此参数必须是一个字符串,指示必须检索信息的所需语言环境。对于Microsoft语言环境标识符,字符串的格式为“MS_xxxx”,其中xxxx是十六进制形式的字符串,表示LCID。例如,美式英语会显示为“MS_409”。
strAuthority
值 |
含义 |
"" |
此参数是可选的。但是,如果指定,则只能使用Kerberos或NTLMDomain。 |
Kerberos的: |
如果strAuthority参数以字符串“Kerberos:”开始,则使用Kerberos身份验证,此参数应包含Kerberos主体名称。Kerberos主体名称指定为Kerberos:域,例如Kerberos的:Fabrikam的其中Fabrikam的是要尝试连接的服务器。
示例:“Kerberos:DOMAIN” |
NTLMDomain: |
要使用NT Lan Manager(NTLM)身份验证,您必须将其指定为NTLMDomain:域,例如NTLMDomain:fabrikam,其中Fabrikam的是域的名称。
示例:“NTLMDomain:DOMAIN” |
如果将此参数留空,操作系统将与COM协商确定是否使用NTLM或Kerberos身份验证。此参数只能用于与远程WMI服务器的连接。如果尝试设置本地WMI连接的权限,则连接尝试失败。
注意如果在Strus中指定了域,这是首选位置,则不能在此处指定。在两个参数中指定域会导致无效参数错误。
iSecurityFlags
用于将标志值传递给ConnectServer.
标志/值 |
含义 |
0 &H0 |
对于该参数,值为0将导致只有在建立与服务器的连接后才能返回ConnectServer.如果无法建立连接,这可能会导致程序无限期挂起。 |
wbemConnectFlagUseMaxWait 128 &H80 |
ConnectServer电话保证在2分钟以内返回。如果无法建立连接,请使用此标志来防止程序无限期挂起。 |
objwbemNamedValueSet
通常,这是未定义的。否则,这是一个SWbemNamedValueSet对象,其元素表示正在为请求提供服务的提供商可以使用的上下文信息。支持或要求此类信息的提供者必须记录识别的值名称,值的数据类型,允许的值和语义。
objwbemServices
如果成功,WMI将返回SWbemServices绑定到strServer中指定的计算机上strNamespace中指定的命名空间的对象。
OBJRESULT
错误(名称/十进制/十六进制) |
含义 |
wbemErrAccessDenied -2147217405 &H80041003 |
当前或指定的用户名和密码无效或被授权进行连接。 |
wbemErrFailed -2147217407 &H80041001 |
未指定错误 |
wbemErrInvalidNamespace -2147217394 &H8004100E |
指定的命名空间在服务器上不存在。 |
wbemErrInvalidParameter -2147217400 &H80041008 |
指定了无效参数,或者无法解析命名空间。 |
wbemErrOutOfMemory -2147217402 &H80041006 |
没有足够的内存来完成操作。 |
wbemErrTransportFailure -2147217387 &H80041015 |
发生网络错误,防止正常运行。 |
示例代码
以下VBScript代码示例描述如何连接到远程计算机以获取Win32_IP4RouteTable数据。strAuthorityen中指定的域名在strAuthorityen中使用。
Const intMin = 3600
将strComputer =“远程计算机”de
strDomain =“DomainName”
Wscript.StdOut.Write“请输入您的用户名:”
strUser = Wscript.StdIn.ReadLine
设置objPassword = CreateObject(“ScriptPW.Password”)
Wscript.StdOut.Write“请输入您的密码:”
strPassword = objPassword.GetPassword()
Wscript.Echo
设置objSWbemLocator = CreateObject(“WbemScripting.SWbemLocator”)
设置objWMIService = objSWbemLocator.ConnectServer(strComputer,_
“root \\ CIMV2”,_
Strus,_
strPassword,_
"MS_409", _
“NTLMDomain:” strDomain)xh
九月colItems的objWMIService.ExecQuery =(_
“SELECT * FROM Win32_IP4RouteTable”,, 48)
对于colItems中的每个objItem
WScript.Echo“Age of minutes:”_
int {objItem.Age / intMin} {
&“说明:”&objItem.Description &VBNewLine _en
&“目的地:”&objItem.Destination &VBNewLine _
&“InterfaceIndex” objItem.InterfaceIndex {98??9796005}_ &vbNewLine
&“Mask:”&objItem.Mask &VBNewLine _
&“Metric1:”&objItem.Metric1 &VBNewLine _en
&“Metric2:”&objItem.Metric2 &VBNewLine _en
&“Metric3:”&objItem.Metric3 &VBNewLine _en
&“Metric4:”&objItem.Metric4 &VBNewLine _en
&“Metric5:”&objItem.Metric5 &VBNewLine _en
&“Name:”&objItem.Name &VBNewLine _
&“NextHop:”&objItem.NextHop &VBNewLine _
&“协议:”&objItem.Protocol &VBNewLine _
&“类型:”&objItem.Type
WScript.Echo
下一个
备注
在远程计算机上连接到具有不同用户名和密码—的帐户时,通常使用ConnectServer方法,因为您无法在绰号字符串中指定其他密码。有关详细信息,请参阅连接到远程计算机上的WMI.
要求
客户 |
需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95 OSR2及更高版本。 |
服务器 |
需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。 |
类型库 |
使用Wbemdisp.tlb。 |
头 |
Wbemdisp.inc。 |
DLL |
需要Wbemdisp.dll。 |