SWbemLocator.ConnectServer-Methode
Mit der ConnectServer-Methode des SWbemLocator-Objekts wird eine Verbindung mit dem Namespace auf dem Computer hergestellt, der im parameter strServer angegeben ist. Der Zielcomputer kann entweder lokal oder remote sein, aber WMI muss installiert sein. Beispiele und einen Vergleich mit dem Monikertyp der Verbindung finden Sie unter Erstellen eines WMI-Skripts.
Ab Windows Vista kann SWbemLocator.ConnectServer über eine IPv6-Adresse im parameter strServer 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]
-
Computername, 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, wird der Aufruf standardmäßig auf den lokalen Computer festgelegt.
Beispiel:
server1.network.fabrikamSie können auch eine IP-Adresse in diesem Parameter verwenden. Wenn die IP-Adresse im IPv6-Format vor liegt, muss auf dem Zielcomputer IPv6 ausgeführt werden. Eine Adresse in IPv4 sieht wie die
123.123.123.123Eine IP-Adresse im IPv6-Format sieht so aus:
2010:836B:4179::836B:4179Weitere Informationen zu DNS und IPv4 finden Sie im Abschnitt "Hinweise".
-
strNamespace [ in, optional]
-
Eine Zeichenfolge, die den Namespace angibt, bei dem Sie sich anmelden. Wenn Sie sich beispielsweise beim Standardnamespace des \ Stamms anmelden, 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 Skript.
Beispiel: "root \ CIMV2"
-
strUser [ in, optional]
-
Benutzername, der zum Herstellen einer Verbindung verwendet werden soll. Die Zeichenfolge kann entweder in Form eines Benutzernamens oder eines Domänenbenutzernamens \ verwendet werden. Lassen Sie diesen Parameter leer, um den aktuellen Sicherheitskontext zu verwenden. Der parameter strUser sollte nur für Verbindungen mit WMI-Remoteservern verwendet werden. Wenn Sie versuchen, strUser für eine lokale WMI-Verbindung anzugeben, schlägt der Verbindungsversuch fehl. Wenn die Kerberos-Authentifizierung verwendet wird, können benutzername und kennwort, die in strUser und strPassword angegeben sind, nicht in einem Netzwerk abgefangen werden. Sie können das UPN-Format verwenden, um strUser anzugeben.
Beispiel: "DomainName \ UserName"
Hinweis
Wenn eine Domäne in strAuthority angegeben wird, darf die Domäne hier nicht angegeben werden. Die Angabe der Domäne in beiden Parametern führt zu einem Fehler vom Typ Ungültiger Parameter.
-
strPassword [ in, optional]
-
Eine 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 mit Verbindungen mit WMI-Remoteservern verwendet werden. Wenn Sie versuchen, strPassword für eine lokale WMI-Verbindung anzugeben, schlägt der Verbindungsversuch fehl. Wenn die Kerberos-Authentifizierung verwendet wird, können benutzername und kennwort, die in strUser und strPassword angegeben sind, nicht im Netzwerk abgefangen werden.
-
strLocale [ in, optional]
-
Eine Zeichenfolge, die den Lokalisierungscode angibt. Wenn Sie das aktuelle Locale verwenden möchten, lassen Sie es leer. Wenn dieser Parameter nicht leer ist, muss er eine Zeichenfolge sein, die das gewünschte Locale angibt, in dem Informationen abgerufen werden müssen. Für Microsoft-Locale-Bezeichner ist das Format der Zeichenfolge "MS xxxx", wobei xxxx eine Zeichenfolge in hexadezimaler Form ist, die die _ LCID angibt. Das amerikanische Englisch würde z. B. als "MS _ 409" angezeigt.
-
strAuthority [ in, optional]
-
""
-
Dieser Parameter ist optional. Wenn sie 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. , wobei der Server ist, mit dem
Kerberos:fabrikamSie eine Verbindung herstellenfabrikammö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. , wobei der
NTLMDomain:fabrikamName der Domänefabrikamist.Beispiel: "NTLMDomain:DOMAIN"
Wenn Sie diesen Parameter leer lassen, handelt das Betriebssystem mit COM aus, um zu bestimmen, 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 zu setzen, schlägt der Verbindungsversuch fehl.
Hinweis
Wenn die Domäne in strUser angegeben wird, was der bevorzugte Speicherort ist, darf sie hier nicht angegeben werden. Die Angabe der Domäne in beiden Parametern führt zu einem Fehler vom Typ Ungültiger Parameter.
iSecurityFlags [ in, optional]
Wird verwendet, um Flagwerte an ConnectServer zu übergeben.
0 (0x0)
Der Wert 0 für diesen Parameter bewirkt, dass der Aufruf von ConnectServer erst nach dem Herstellen der Verbindung mit dem Server zurückgibt. Dies kann dazu führen, dass Ihr Programm nicht mehr unbegrenzt reagiert, wenn die Verbindung nicht hergestellt werden kann.
wbemConnectFlagUseMaxWait** (128 (0x80))
Der ConnectServer-Aufruf wird garantiert in 2 Minuten oder weniger zurückgerufen. Verwenden Sie dieses Flag, um zu verhindern, dass Ihr Programm auf unbestimmte Zeit reagiert, wenn die Verbindung nicht hergestellt werden kann.
objwbemNamedValueSet [ in, optional]
In der Regel ist dies nicht definiert. Andernfalls ist dies ein SWbemNamedValueSet-Objekt, dessen Elemente die Kontextinformationen darstellen, die vom Anbieter verwendet werden können, der die Anforderung bedient. Ein Anbieter, der solche Informationen unterstützt oder erfordert, muss die erkannten Wertnamen, den Datentyp des Werts, die zulässigen Werte und die Semantik dokumentieren.
Rückgabewert
Bei Erfolg gibt WMI ein SWbemServices-Objekt zurück, das an den Namespace gebunden ist, der in strNamespace auf dem Computer angegeben ist, der in strServer angegeben ist.
Fehlercodes
Nach Abschluss der ConnectServer-Methode kann das Err-Objekt einen der Fehlercodes in der folgenden Liste enthalten.
-
wbemErrAccessDenied – 2147749891 (0x80041003)
-
Der aktuelle oder angegebene Benutzername und das Kennwort waren nicht gültig oder zum Herstellen 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)
-
Nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs.
-
wbemErrTransportFailure – 2147749909
-
Es ist ein Netzwerkfehler aufgetreten, der den normalen Betrieb verhindert.
Bemerkungen
Die ConnectServer-Methode wird häufig verwendet, wenn Sie eine Verbindung mit einem Konto mit einem anderen Benutzernamen und anderen Kennwortanmeldeinformationen auf einem Remotecomputer herstellen, 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. In diesen Fällen wird der veraltete PTR-Eintrag für den Computer mit unvorhersehbaren Ergebnissen verwendet. Um dieses Verhalten zu vermeiden, können Sie einen Zeitraum (".") an die IP-Adresse anfügen, bevor Sie ConnectServer aufrufen. Dies führt dazu, dass die Reverse-DNS-Suche fehlschlägt, aber der ConnectServer-Aufruf auf dem richtigen Computer erfolgreich ausgeführt werden kann.
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-Codeausschnitt 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
Requirements (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 |