SWbemLocator.ConnectServer 方法

SWbemLocator物件的ConnectServer方法會連接到strServer參數中指定的電腦上命名空間。 目的電腦可以是本機或遠端電腦,但必須安裝 WMI。 如需連線 Moniker 類型的範例和比較,請參閱 建立 WMI 腳本

從 Windows Vista 開始, SWbemLocator.ConnectServer 可以使用 strServer 參數中的 IPv6 位址,與執行 IPv6 的電腦連線。 如需詳細資訊,請參閱 WMI 中的 IPv6 和 IPv4 支援

如需此語法的說明,請參閱 腳本 API 的檔慣例

語法

objwbemServices = .ConnectServer( _
  [ ByVal strServer ], _
  [ ByVal strNamespace ], _
  [ ByVal strUser ], _
  [ ByVal strPassword ], _
  [ ByVal strLocale ], _
  [ ByVal strAuthority ], _
  [ ByVal iSecurityFlags ], _
  [ ByVal objwbemNamedValueSet ] _
)

參數

strServer [in, optional]

您要連線的電腦名稱稱。 如果遠端電腦位於與您登入所在的使用者帳戶不同的網域,請使用完整電腦名稱稱。 如果您未提供此參數,則呼叫預設為本機電腦。

範例: server1.network.fabrikam

您也可以使用此參數中的 IP 位址。 如果 IP 位址是 IPv6 格式,則目的電腦必須執行 IPv6。 IPv4 中的位址看起來像 123.123.123.123

IPv6 格式的 IP 位址看起來像 2010:836B:4179::836B:4179

如需 DNS 和 IPv4 的詳細資訊,請參閱一節。

strNamespace [in, optional]

字串,指定您登入的命名空間。 例如,若要登入 root\default 命名空間,請使用 root\default。 如果您未指定此參數,它會預設為設定為腳本的預設命名空間。 如需詳細資訊,請參閱 建立 WMI 應用程式或腳本

範例:「root\CIMV2」

strUser [in, optional]

要用來連線的使用者名稱。 字串的格式可以是使用者名稱或 Domain\Username。 將此參數保留空白,以使用目前的安全性內容。 strUser參數應該只與遠端 WMI 伺服器的連線搭配使用。 如果您嘗試指定本機 WMI 連線的 strUser ,連線嘗試會失敗。 如果 Kerberos 驗證正在使用中,則無法在網路上攔截 strUserstrPassword 中指定的使用者名稱和密碼。 您可以使用 UPN 格式來指定 strUser

範例:「DomainName\UserName」

注意

如果在 strAuthority中指定網域,則不得在此指定網域。 在這兩個參數中指定定義域會導致參數錯誤無效。

strPassword [in, optional]

字串,指定要在嘗試連接時使用的密碼。 將 參數保留空白,以使用目前的安全性內容。 strPassword參數應該只與遠端 WMI 伺服器的連線搭配使用。 如果您嘗試為本機 WMI 連線指定 strPassword ,連線嘗試會失敗。 如果 Kerberos 驗證正在使用中,則無法在網路上攔截 strUserstrPassword 中指定的使用者名稱和密碼。

strLocale [in, optional]

指定當地語系化程式碼的字串。 如果您想要使用目前的地區設定,請將它保留空白。 如果不是空白,此參數必須是字串,表示必須擷取資訊所需的地區設定。 對於 Microsoft 地區設定識別碼,字串的格式為 「MS_xxxx」,其中 xxxx 是十六進位格式表示 LCID 的字串。 例如,美式英文會顯示為 「MS_409」。

strAuthority [in, optional]

""

這是選擇性參數。 不過,如果已指定,則只能使用 Kerberos 或 NTLMDomain。

Kerberos:

如果 strAuthority 參數以字串 「Kerberos:」 開頭,則會使用 Kerberos 驗證,而且此參數應該包含 Kerberos 主體名稱。 Kerberos 主體名稱會指定為 Kerberos:domain,例如 Kerberos:fabrikam ,其中 fabrikam 是您嘗試連線的伺服器。

範例:「Kerberos:DOMAIN」

NTLMDomain:

若要使用 NT Lan Manager (NTLM) 驗證,您必須將其指定為 NTLMDomain:domain,例如 NTLMDomain:fabrikam where fabrikam 是網域的名稱。

範例:「NTLMDomain:DOMAIN」

如果您將此參數保留空白,作業系統會與 COM 交涉,以判斷是否使用 NTLM 或 Kerberos 驗證。 此參數只能與遠端 WMI 伺服器的連線搭配使用。 如果您嘗試設定本機 WMI 連線的授權單位,連線嘗試會失敗。

注意

如果在 strUser中指定網域,這是慣用的位置,則不得在此指定網域。 在這兩個參數中指定定義域會導致參數錯誤無效。

iSecurityFlags [in, optional]

用來將旗標值傳遞至 ConnectServer

0 (0x0)

此參數的值為 0,會導致只有在建立與伺服器的連線之後,才傳回 ConnectServer 的呼叫。 如果無法建立連線,這可能會導致程式無限期地停止回應。

wbemConnectFlagUseMaxWait (128 (0x80) )

ConnectServer呼叫保證會在 2 分鐘內傳回。 使用此旗標可防止程式在無法建立連線時無限期地回應。

objwbemNamedValueSet [in, optional]

一般而言,這是未定義的。 否則,這是 SWbemNamedValueSet 物件,其元素代表服務要求的提供者可以使用的內容資訊。 支援或需要這類資訊的提供者必須記載已辨識的值名稱、值的資料類型、允許的值和語意。

傳回值

如果成功,WMI 會傳回SWbemServices物件,該物件系結至strServer中指定的電腦上strNamespace中指定的命名空間。

錯誤碼

ConnectServer方法完成之後,Err物件可能會包含下列清單中的其中一個錯誤碼。

wbemErrAccessDenied - 2147749891 (0x80041003)

目前或指定的使用者名稱和密碼無效,或已獲授權進行連線。

wbemErrFailed - 2147749889 (0x80041001)

未指定的錯誤。

wbemErrInvalidNamespace - 2147749902 (0x8004100E)

指定的命名空間不存在於伺服器上。

wbemErrInvalidParameter - 2147749896 (0x80041008)

指定了不正確參數,或無法剖析命名空間。

wbemErrOutOfMemory - 2147749894 (0x80041006)

記憶體不足,無法完成作業。

wbemErrTransportFailure - 2147749909

發生網路錯誤,導致無法正常運作。

備註

連線到遠端電腦上具有不同使用者名稱和密碼認證的帳戶時,通常會使用 ConnectServer 方法,因為您無法在 Moniker 字串中指定不同的密碼。 如需詳細資訊,請參閱 連線到遠端電腦上的 WMI

使用 IPv4 位址連線到遠端伺服器可能會導致非預期的行為。 可能是環境中過時的 DNS 專案。 在這些情況下,將會使用機器的過時 PTR 專案,並產生無法預測的結果。 若要避免這種行為,您可以附加句點 (」。在呼叫 ConnectServer 之前,先) IP 位址。 這會導致反向 DNS 查閱失敗,但可能會允許 ConnectServer 呼叫在正確的電腦上成功。

範例

下列 VBScript 程式碼範例說明如何連線到遠端電腦以取得 Win32_IP4RouteTable 資料。 strDomain中指定的功能變數名稱會用於strAuthority

Const intMin = 3600
strComputer = "RemoteComputer" 
strDomain = "DomainName"  
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine 
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Wscript.Echo

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Set objWMIService = objSWbemLocator.ConnectServer(strComputer, _ 
                                                  "root\CIMV2", _ 
                                                  strUser, _ 
                                                  strPassword, _ 
                                                  "MS_409", _ 
                                                  "NTLMDomain:" + strDomain) 
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_IP4RouteTable",,48) 
For Each objItem in colItems
    WScript.Echo "Age in Minutes: " & int(objItem.Age/intMin) & VBNewLine _
               & "Description:    " & objItem.Description & VBNewLine _
               & "Destination:    " & objItem.Destination & VBNewLine _
               & "InterfaceIndex: " & objItem.InterfaceIndex & VBNewLine _
               & "Mask:           " & objItem.Mask & VBNewLine _
               & "Metric1:        " & objItem.Metric1 & VBNewLine _
               & "Metric2:        " & objItem.Metric2 & VBNewLine _
               & "Metric3:        " & objItem.Metric3 & VBNewLine _
               & "Metric4:        " & objItem.Metric4 & VBNewLine _
               & "Metric5:        " & objItem.Metric5 & VBNewLine _
               & "Name:           " & objItem.Name & VBNewLine _
               & "NextHop:        " & objItem.NextHop & VBNewLine _
               & "Protocol:       " & objItem.Protocol & VBNewLine _
               & "Type: " & objItem.Type
    WScript.Echo
   </example>
Next

下列 PowerShell 程式碼片段會存取遠端伺服器,並列出可用的 WMI 類別。

$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

另請參閱

SWbemLocator

SWbemServices

連線到遠端電腦上的 WMI

建立 WMI 腳本