SWbemLocator.ConnectServer-Methode
Die ConnectServer-Methode des SWbemLocator-Objekts stellt eine Verbindung mit dem Namespace auf dem Computer her, der im strServer-Parameter angegeben ist. Bei dem Zielcomputer kann es sich um einen lokalen oder Remotecomputer handeln, doch muss WMI installiert sein. Beispiele und einen Vergleich mit dem Moniker-Verbindungstyp finden Sie unter Erstellen eines WMI-Skripts.
Ab Windows Vista kann SWbemLocator.ConnectServer über eine IPv6-Adresse im strServer-Parameter eine Verbindung mit Computern herstellen, auf denen IPv6 ausgeführt wird. Weitere Informationen finden Sie unter IPv6- und IPv4-Unterstützung in WMI.
Eine Erläuterung dieser Syntax finden Sie unter Dokumentkonventionen für die Skripterstellungs-API.
Syntax
objwbemServices = .ConnectServer( _
[ ByVal strServer ], _
[ ByVal strNamespace ], _
[ ByVal strUser ], _
[ ByVal strPassword ], _
[ ByVal strLocale ], _
[ ByVal strAuthority ], _
[ ByVal iSecurityFlags ], _
[ ByVal objwbemNamedValueSet ] _
)
Parameter
-
strServer [in, optional]
-
Name des Computers, mit dem Sie eine Verbindung herstellen. Wenn sich der Remotecomputer in einer anderen Domäne als das Benutzerkonto befindet, unter dem Sie sich anmelden, verwenden Sie den vollqualifizierten Computernamen. Wenn Sie diesen Parameter nicht angeben, erfolgt der Aufruf standardmäßig für den lokalen Computer.
Beispiel:
server1.network.fabrikam
Sie können auch eine IP-Adresse in diesem Parameter verwenden. Wenn die IP-Adresse im IPv6-Format vorliegt, muss auf dem Zielcomputer IPv6 ausgeführt werden. Eine Adresse in IPv4 sieht wie folgt aus:
123.123.123.123
Eine IP-Adresse im IPv6-Format sieht wie folgt aus:
2010:836B:4179::836B:4179
Weitere Informationen zu DNS und IPv4 finden Sie im Abschnitt „Hinweise“.
-
strNamespace [in, optional]
-
Zeichenfolge, die den Namespace angibt, bei dem Sie sich anmelden. Um sich beispielsweise beim Namespace „root\default“ anzumelden, verwenden Sie „root\default“. Wenn Sie diesen Parameter nicht angeben, wird standardmäßig der Namespace verwendet, der als Standardnamespace für die Skripterstellung konfiguriert ist. Weitere Informationen finden Sie unter Erstellen einer WMI-Anwendung oder eines WMI-Skripts.
Beispiel: „root\CIMV2“
-
strUser [in, optional]
-
Benutzername, der zum Herstellen einer Verbindung verwendet werden soll. Die Zeichenfolge kann entweder in Form eines Benutzernamens oder als Domäne\Benutzername angegeben werden. Lassen Sie diesen Parameter leer, um den aktuellen Sicherheitskontext zu verwenden. Der Parameter strUser sollte nur bei Verbindungen mit WMI-Remoteservern verwendet werden. Wenn Sie versuchen, strUser für eine lokale WMI-Verbindung anzugeben, tritt bei dem Verbindungsversuch ein Fehler auf. Wenn die Kerberos-Authentifizierung verwendet wird, können der Benutzername und das Kennwort, die in strUser und strPassword angegeben sind, nicht in einem Netzwerk abgefangen werden. Sie können das UPN-Format zur Angabe von strUser verwenden.
Beispiel: „DomainName\UserName“
Hinweis
Wenn eine Domäne in strAuthority angegeben wird, darf die Domäne hier nicht angegeben werden. Das Angeben der Domäne in beiden Parametern führt zu einem Fehler aufgrund eines ungültigen Parameters.
-
strPassword [in, optional]
-
Zeichenfolge, die das Kennwort angibt, das beim Herstellen einer Verbindung verwendet werden soll. Lassen Sie den Parameter leer, um den aktuellen Sicherheitskontext zu verwenden. Der Parameter strPassword sollte nur bei Verbindungen mit WMI-Remoteservern verwendet werden. Wenn Sie versuchen, strPassword für eine lokale WMI-Verbindung anzugeben, tritt bei dem Verbindungsversuch ein Fehler auf. Wenn die Kerberos-Authentifizierung verwendet wird, können der Benutzername und das Kennwort, die in strUser und strPassword angegeben sind, nicht im Netzwerk abgefangen werden.
-
strLocale [in, optional]
-
Zeichenfolge, die den Lokalisierungscode angibt. Wenn Sie das aktuelle Gebietsschema verwenden möchten, lassen Sie den Parameter leer. Wenn dieser Parameter nicht leer ist, muss es sich um eine Zeichenfolge handeln, die das gewünschte Gebietsschema angibt, in dem Informationen abgerufen werden müssen. Bei Microsoft-Gebietsschemabezeichnern lautet das Format der Zeichenfolge „MS_xxxx“, wobei „xxxx“ eine Zeichenfolge in hexadezimaler Form ist, die den Gebietsschemabezeichner (Locale Identifier, LCID) angibt. Beispielsweise würde amerikanisches Englisch als „MS_409“ angezeigt.
-
strAuthority [in, optional]
-
""
-
Dieser Parameter ist optional. Wenn er jedoch angegeben wird, kann nur Kerberos oder NTLMDomain verwendet werden.
-
Kerberos:
-
Wenn der Parameter strAuthority mit der Zeichenfolge „Kerberos:“ beginnt, wird die Kerberos-Authentifizierung verwendet, und dieser Parameter sollte einen Kerberos-Prinzipalnamen enthalten. Der Kerberos-Prinzipalname wird als „Kerberos:Domäne“ angegeben, z. B.
Kerberos:fabrikam
, wobeifabrikam
der Server ist, mit dem Sie eine Verbindung herstellen möchten.Beispiel: „Kerberos:DOMAIN“
-
NTLMDomain:
-
Um die NTLM-Authentifizierung (NT Lan Manager) zu verwenden, müssen Sie sie als „NTLMDomain:Domäne“ angeben, z. B.
NTLMDomain:fabrikam
, wobeifabrikam
der Name der Domäne ist.Beispiel: „NTLMDomain:DOMAIN“
Wenn Sie diesen Parameter leer lassen, handelt das Betriebssystem mit COM aus, ob die NTLM- oder Kerberos-Authentifizierung verwendet wird. Dieser Parameter sollte nur bei Verbindungen mit WMI-Remoteservern verwendet werden. Wenn Sie versuchen, die Autorität für eine lokale WMI-Verbindung festzulegen, tritt bei dem Verbindungsversuch ein Fehler auf.
Hinweis
Wenn die Domäne in strUser (bevorzugter Ort) angegeben ist, darf sie hier nicht angegeben werden. Das Angeben der Domäne in beiden Parametern führt zu einem Fehler aufgrund eines ungültigen Parameters.
iSecurityFlags [in, optional]
Wird verwendet, um Flagwerte an ConnectServer zu übergeben.
0 (0x0)
Der Wert 0 (null) für diesen Parameter bewirkt, dass der Aufruf von ConnectServer erst zurückgegeben wird, nachdem die Verbindung mit dem Server hergestellt wurde. Dies kann dazu führen, dass Ihr Programm auf unbestimmte Zeit nicht mehr reagiert, wenn die Verbindung nicht hergestellt werden kann.
wbemConnectFlagUseMaxWait (128 (0x80))
Garantiert, dass der ConnectServer-Aufruf nach maximal zwei Minuten zurückgegeben wird. Verwenden Sie dieses Flag, um zu verhindern, dass Ihr Programm auf unbestimmte Zeit nicht mehr reagiert, wenn die Verbindung nicht hergestellt werden kann.
objwbemNamedValueSet [in, optional]
In der Regel nicht definiert. Andernfalls handelt es sich um ein SWbemNamedValueSet-Objekt, dessen Elemente die Kontextinformationen darstellen, die von dem Anbieter verwendet werden können, der die Anforderung verarbeitet. Ein Anbieter, der solche Informationen unterstützt oder benötigt, muss die erkannten Wertnamen, den Datentyp des Werts, die zulässigen Werte und die Semantik dokumentieren.
Rückgabewert
Bei erfolgreicher Ausführung gibt WMI ein SWbemServices-Objekt zurück, das an den Namespace gebunden ist, der in strNamespace auf dem in strServer festgelegten Computer angegeben ist.
Fehlercodes
Nach Abschluss derConnectServer-Methode enthält das Err-Objekt möglicherweise einen der Fehlercodes aus der folgenden Liste.
-
wbemErrAccessDenied – 2147749891 (0x80041003)
-
Der aktuelle oder angegebene Benutzername und das Kennwort waren nicht gültig oder für die Herstellung der Verbindung autorisiert.
-
wbemErrFailed – 2147749889 (0x80041001)
-
Unbekannter Fehler.
-
wbemErrInvalidNamespace – 2147749902 (0x8004100E)
-
Der angegebene Namespace war auf dem Server nicht vorhanden.
-
wbemErrInvalidParameter – 2147749896 (0x80041008)
-
Ein ungültiger Parameter wurde angegeben, oder der Namespace konnte nicht analysiert werden.
-
wbemErrOutOfMemory – 2147749894 (0x80041006)
-
Es ist nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs vorhanden.
-
wbemErrTransportFailure – 2147749909
-
Ein Netzwerkfehler, der den normalen Betrieb verhinderte.
Bemerkungen
Die ConnectServer-Methode wird häufig verwendet, wenn eine Verbindung mit einem Konto mit einem anderen Benutzernamen und einem anderen Kennwort auf einem Remotecomputer hergestellt werden soll, da Sie kein anderes Kennwort in einer Monikerzeichenfolge angeben können. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.
Die Verwendung einer IPv4-Adresse zum Herstellen einer Verbindung mit einem Remoteserver kann zu unerwartetem Verhalten führen. Die wahrscheinliche Ursache sind veraltete DNS-Einträge in Ihrer Umgebung. Unter diesen Umständen wird der veraltete PTR-Eintrag für den Computer verwendet, was zu unvorhersehbaren Ergebnissen führt. Um dieses Verhalten zu vermeiden, können Sie vor dem Aufrufen von „ConnectServer“ einen Punkt (.) an die IP-Adresse anfügen. Dies führt dazu, dass beim Reverse-DNS-Lookup ein Fehler auftritt, aber möglicherweise der ConnectServer-Aufruf auf dem richtigen Computer erfolgreich ist.
Beispiele
Im folgenden VBScript-Codebeispiel wird beschrieben, wie Sie eine Verbindung mit einem Remotecomputer herstellen, um Win32_IP4RouteTable-Daten abzurufen. Der in strDomain angegebene Domänenname wird in strAuthority verwendet.
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
Der folgende PowerShell-Codeschnipsel greift auf einen Remoteserver zu und listet die verfügbaren WMI-Klassen auf.
$NameSpace = 'root\ccm'
$ComputerName = 'sccm.company.com'
$WbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$WbemServices = $WbemLocator.ConnectServer($ComputerName, $Namespace)
$WbemClasses = $WbemServices.SubclassesOf()
$WbemClasses
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows Vista |
Unterstützte Mindestversion (Server) |
Windows Server 2008 |
Header |
|
Typbibliothek |
|
DLL |
|
CLSID |
CLSID_SWbemLocator |
IID |
IID_ISWbemLocator |