Partage via


Méthode SWbemLocator.ConnectServer

La méthode ConnectServer de l’objet SWbemLocator se connecte à l’espace de noms sur l’ordinateur spécifié dans le paramètre strServer. L’ordinateur cible peut être local ou distant, mais WMI doit être installé. Pour obtenir des exemples et une comparaison avec le type de connexion moniker, consultez Création d’un script WMI.

À compter de Windows Vista, SWbemLocator.ConnectServer peut se connecter aux ordinateurs exécutant IPv6 à l’aide d’une adresse IPv6 dans le paramètre strServer. Pour plus d’informations, consultez Prise en charge IPv6 et IPv4 dans WMI.

Pour obtenir une explication de cette syntaxe, consultez Conventions de document pour l’API de script.

Syntaxe

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

Paramètres

strServer [in, optional]

Nom de l’ordinateur auquel vous vous connectez. Si l’ordinateur distant se trouve dans un domaine différent du compte d’utilisateur sous lequel vous vous connectez, utilisez le nom complet de l’ordinateur. Si vous ne fournissez pas ce paramètre, l’appel est par défaut sur l’ordinateur local.

Exemple : server1.network.fabrikam

Vous pouvez également utiliser une adresse IP dans ce paramètre. Si l’adresse IP est au format IPv6, l’ordinateur cible doit exécuter IPv6. Une adresse dans IPv4 ressemble à 123.123.123.123

Une adresse IP au format IPv6 ressemble à 2010:836B:4179::836B:4179

Pour plus d’informations sur DNS et IPv4, consultez la section Remarques.

strNamespace [in, optional]

Chaîne qui spécifie l’espace de noms auquel vous vous connectez. Par exemple, pour vous connecter à l’espace de noms root\default, utilisez root\default. Si vous ne spécifiez pas ce paramètre, il utilise par défaut l’espace de noms configuré comme espace de noms par défaut pour les scripts. Pour plus d’informations, consultez Création d’une application ou d’un script WMI.

Exemple : « root\CIMV2 »

strUser [in, optional]

Nom d’utilisateur à utiliser pour se connecter. La chaîne peut être sous la forme d’un nom d’utilisateur ou d’un nom d’utilisateur de domaine. Laissez ce paramètre vide pour utiliser le contexte de sécurité actuel. Le paramètre strUser ne doit être utilisé qu’avec des connexions à des serveurs WMI distants. Si vous tentez de spécifier strUser pour une connexion WMI locale, la tentative de connexion échoue. Si l’authentification Kerberos est en cours d’utilisation, le nom d’utilisateur et le mot de passe spécifiés dans strUser et strPassword ne peuvent pas être interceptés sur un réseau. Vous pouvez utiliser le format UPN pour spécifier le strUser.

Exemple : « NomDomaine\NomUtilisateur »

Notes

Si un domaine est spécifié dans strAuthority, le domaine ne doit pas être spécifié ici. La spécification du domaine dans les deux paramètres entraîne une erreur paramètre non valide.

strPassword [in, optional]

Chaîne qui spécifie le mot de passe à utiliser lors de la tentative de connexion. Laissez le paramètre vide pour utiliser le contexte de sécurité actuel. Le paramètre strPassword ne doit être utilisé qu’avec les connexions aux serveurs WMI distants. Si vous tentez de spécifier strPassword pour une connexion WMI locale, la tentative de connexion échoue. Si l’authentification Kerberos est en cours d’utilisation, le nom d’utilisateur et le mot de passe spécifiés dans strUser et strPassword ne peuvent pas être interceptés sur un réseau.

strLocale [in, optional]

Chaîne qui spécifie le code de localisation. Si vous souhaitez utiliser les paramètres régionaux actuels, laissez-les vides. S’il n’est pas vide, ce paramètre doit être une chaîne qui indique les paramètres régionaux souhaités où les informations doivent être récupérées. Pour les identificateurs de paramètres régionaux Microsoft, le format de la chaîne est « MS_xxx », où xxx est une chaîne sous forme hexadécimale qui indique l’identificateur de paramètres régionaux (LCID). Par exemple, l’anglais américain apparaît comme « MS_409 ».

strAuthority [in, optional]

""

Ce paramètre est facultatif. Toutefois, s’il est spécifié, seuls Kerberos ou NTLMDomain peuvent être utilisés.

Kerberos :

Si le paramètre strAuthority commence par la chaîne « Kerberos: », l’authentification Kerberos est utilisée et ce paramètre doit contenir un nom de principal Kerberos. Le nom du principal Kerberos est spécifié en tant que Kerberos :domain, par exemple, Kerberos:fabrikamfabrikam est le serveur auquel vous tentez de vous connecter.

Exemple : « Kerberos:DOMAIN »

NTLMDomain :

Pour utiliser l’authentification NT Lan Manager (NTLM), vous devez la spécifier comme NTLMDomain :domain, par exemple, NTLMDomain:fabrikamfabrikam est le nom du domaine.

Exemple : « NTLMDomain:DOMAIN »

Si vous laissez ce paramètre vide, le système d’exploitation négocie avec COM pour déterminer si l’authentification NTLM ou Kerberos est utilisée. Ce paramètre doit uniquement être utilisé avec les connexions aux serveurs WMI distants. Si vous tentez de définir l’autorité pour une connexion WMI locale, la tentative de connexion échoue.

Notes

Si le domaine est spécifié dans strUser, qui est l’emplacement préféré, il ne doit pas être spécifié ici. La spécification du domaine dans les deux paramètres entraîne une erreur paramètre non valide.

iSecurityFlags [in, optional]

Utilisé pour passer des valeurs d’indicateur à ConnectServer.

0 (0x0)

La valeur 0 pour ce paramètre entraîne le retour de l’appel à ConnectServer uniquement après l’établissement de la connexion au serveur. Cela peut empêcher votre programme de répondre indéfiniment si la connexion ne peut pas être établie.

wbemConnectFlagUseMaxWait (128 (0x80))

L’appel ConnectServer est garanti pour être retourné dans un délai de 2 minutes ou moins. Utilisez cet indicateur pour éviter que votre programme cesse de répondre indéfiniment si la connexion ne peut pas être établie.

objwbemNamedValueSet [in, optional]

En règle générale, ceci n’est pas défini. Sinon, il s’agit d’un objet SWbemNamedValueSet dont les éléments représentent les informations de contexte qui peuvent être utilisées par le fournisseur répondant à la demande. Un fournisseur qui prend en charge ou requiert de telles informations doit documenter les noms de valeur reconnus, le type de données de la valeur, les valeurs autorisées et la sémantique.

Valeur retournée

En cas de réussite, WMI retourne un objet SWbemServices lié à l’espace de noms spécifié dans strNamespace sur l’ordinateur spécifié dans strServer.

Codes d’erreur

Une fois la méthode ConnectServer terminée, l’objet Err peut contenir l’un des codes d’erreur de la liste suivante.

wbemErrAccessDenied - 2147749891 (0x80041003)

Le nom d’utilisateur et le mot de passe actuels ou spécifiés n’étaient pas valides ou autorisés à créer la connexion.

wbemErrFailed - 2147749889 (0x80041001)

Erreur non spécifiée.

wbemErrInvalidNamespace - 2147749902 (0x8004100E)

L’espace de noms spécifié n’existait pas sur le serveur.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un paramètre non valide a été spécifié ou l’espace de noms n’a pas pu être analysé.

wbemErrOutOfMemory - 2147749894 (0x80041006)

La mémoire disponible est insuffisante pour terminer cette opération.

wbemErrTransportFailure - 2147749909

Une erreur de mise en réseau s’est produite, empêchant le fonctionnement normal.

Notes

La méthode ConnectServer est souvent utilisée lors de la connexion à un compte avec des informations d’identification de nom d’utilisateur et de mot de passe différentes sur un ordinateur distant, car vous ne pouvez pas spécifier un autre mot de passe dans une chaîne de moniker. Pour plus d’informations, consultez Connexion à WMI sur un ordinateur distant.

L’utilisation d’une adresse IPv4 pour se connecter à un serveur distant peut entraîner un comportement inattendu. La cause probable est les entrées DNS obsolètes dans votre environnement. Dans ces circonstances, l’entrée PTR obsolète pour la machine sera utilisée, avec des résultats imprévisibles. Pour éviter ce comportement, vous pouvez ajouter un point (« . ») à l’adresse IP avant d’appeler ConnectServer. Cela entraîne l’échec de la recherche DNS inversée, mais peut permettre à l’appel ConnectServer de réussir sur l’ordinateur approprié.

Exemples

L’exemple de code VBScript suivant décrit comment se connecter à un ordinateur distant pour obtenir les données Win32_IP4RouteTable. Le nom de domaine spécifié dans strDomain est utilisé dans 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

L’extrait de code PowerShell suivant accède à un serveur distant et répertorie les classes WMI disponibles.

$NameSpace = 'root\ccm'
$ComputerName = 'sccm.company.com'
$WbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$WbemServices = $WbemLocator.ConnectServer($ComputerName, $Namespace)
$WbemClasses = $WbemServices.SubclassesOf()
$WbemClasses

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
En-tête
Wbemdisp.h
Bibliothèque de types
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemLocator
IID
IID_ISWbemLocator

Voir aussi

SWbemLocator

SWbemServices

Connexion à WMI sur un ordinateur distant

Création d’un script WMI