Condividi tramite


Metodo SWbemLocator.ConnectServer

Il metodo ConnectServer dell'oggetto SWbemLocator si connette allo spazio dei nomi nel computer specificato nel parametro strServer . Il computer di destinazione può essere locale o remoto, ma deve essere installato WMI. Per esempi e un confronto con il tipo di moniker di connessione, vedere Creazione di uno script WMI.

A partire da Windows Vista, SWbemLocator.ConnectServer può connettersi ai computer che eseguono IPv6 usando un indirizzo IPv6 nel parametro strServer . Per altre informazioni, vedere Supporto IPv6 e IPv4 in WMI.

Per una spiegazione di questa sintassi, vedere Document Conventions per l'API di scripting.

Sintassi

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

Parametri

strServer [in, facoltativo]

Nome computer a cui ci si connette. Se il computer remoto si trova in un dominio diverso dall'account utente in cui si accede, usare il nome computer completo. Se non si specifica questo parametro, la chiamata viene eseguita per impostazione predefinita nel computer locale.

Esempio: server1.network.fabrikam

È anche possibile usare un indirizzo IP in questo parametro. Se l'indirizzo IP è in formato IPv6, il computer di destinazione deve eseguire IPv6. Un indirizzo in IPv4 è simile al seguente 123.123.123.123

Un indirizzo IP in formato IPv6 è simile al seguente 2010:836B:4179::836B:4179

Per altre informazioni su DNS e IPv4, vedere la sezione Osservazioni.

strNamespace [in, facoltativo]

Stringa che specifica lo spazio dei nomi a cui si accede. Ad esempio, per accedere allo spazio dei nomi root\default, usare root\default. Se non si specifica questo parametro, per impostazione predefinita viene impostato lo spazio dei nomi configurato come spazio dei nomi predefinito per lo scripting. Per altre informazioni, vedere Creazione di un'applicazione WMI o di uno script.

Esempio: "root\CIMV2"

strUser [in, facoltativo]

Nome utente da usare per la connessione. La stringa può essere sotto forma di nome utente o dominio\nome utente. Lasciare vuoto questo parametro per usare il contesto di sicurezza corrente. Il parametro strUser deve essere usato solo con connessioni a server WMI remoti. Se si tenta di specificare strUser per una connessione WMI locale, il tentativo di connessione non riesce. Se l'autenticazione Kerberos è in uso, il nome utente e la password specificati in strUser e strPassword non possono essere intercettati in una rete. È possibile usare il formato UPN per specificare strUser.

Esempio: "DomainName\UserName"

Nota

Se si specifica un dominio in strAuthority, il dominio non deve essere specificato qui. Se si specifica il dominio in entrambi i parametri, viene restituito un errore parametro non valido.

strPassword [in, facoltativo]

Stringa che specifica la password da usare durante il tentativo di connessione. Lasciare vuoto il parametro per usare il contesto di sicurezza corrente. Il parametro strPassword deve essere usato solo con connessioni a server WMI remoti. Se si tenta di specificare strPassword per una connessione WMI locale, il tentativo di connessione non riesce. Se l'autenticazione Kerberos è in uso, il nome utente e la password specificati in strUser e strPassword non possono essere intercettati nella rete.

strLocale [in, facoltativo]

Stringa che specifica il codice di localizzazione. Se si vogliono usare le impostazioni locali correnti, lasciare vuoto. Se non è vuoto, questo parametro deve essere una stringa che indica le impostazioni locali desiderate in cui devono essere recuperate le informazioni. Per gli identificatori delle impostazioni locali Microsoft, il formato della stringa è "MS_xxxx", dove xxxx è una stringa nel formato esadecimale che indica l'LCID. Ad esempio, l'inglese americano viene visualizzato come "MS_409".

strAuthority [in, facoltativo]

""

Questo parametro è facoltativo e, Tuttavia, se viene specificato, è possibile usare solo Kerberos o NTLMDomain.

Kerberos:

Se il parametro strAuthority inizia con la stringa "Kerberos:", viene usata l'autenticazione Kerberos e questo parametro deve contenere un nome di entità Kerberos. Il nome dell'entità Kerberos viene specificato come Kerberos:domain, ad esempio Kerberos:fabrikam dove fabrikam è il server a cui si sta tentando di connettersi.

Esempio: "Kerberos:DOMAIN"

NTLMDomain:

Per utilizzare l'autenticazione NT Lan Manager (NTLM), è necessario specificarla come NTLMDomain:domain, ad esempio NTLMDomain:fabrikam dove fabrikam è il nome del dominio.

Esempio: "NTLMDomain:DOMAIN"

Se si lascia vuoto questo parametro, il sistema operativo negozia con COM per determinare se viene usata l'autenticazione NTLM o Kerberos. Questo parametro deve essere usato solo con connessioni a server WMI remoti. Se si tenta di impostare l'autorità per una connessione WMI locale, il tentativo di connessione non riesce.

Nota

Se il dominio è specificato in strUser, ovvero il percorso preferito, non deve essere specificato qui. Se si specifica il dominio in entrambi i parametri, viene restituito un errore parametro non valido.

iSecurityFlags [in, facoltativo]

Usato per passare i valori dei flag a ConnectServer.

0 (0x0)

Il valore 0 per questo parametro fa sì che la chiamata a ConnectServer restituisca solo dopo che è stata stabilita la connessione al server. Ciò potrebbe causare l'arresto indefinito del programma se non è possibile stabilire la connessione.

wbemConnectFlagUseMaxWait (128 (0x80))

La chiamata a ConnectServer viene restituita in 2 minuti o meno. Usare questo flag per impedire al programma di bloccare la risposta indefinita se la connessione non può essere stabilita.

objwbemNamedValueSet [in, facoltativo]

In genere, questo non è definito. In caso contrario, si tratta di un oggetto SWbemNamedValueSet i cui elementi rappresentano le informazioni di contesto che possono essere utilizzate dal provider che sta servendo la richiesta. Un provider che supporta o richiede tali informazioni deve documentare i nomi dei valori riconosciuti, il tipo di dati del valore, i valori consentiti e la semantica.

Valore restituito

In caso di esito positivo, WMI restituisce un oggetto SWbemServices associato allo spazio dei nomi specificato in strNamespace nel computer specificato in strServer.

Codici di errore

Dopo il completamento del metodo ConnectServer , l'oggetto Err può contenere uno dei codici di errore nell'elenco seguente.

wbemErrAccessDenied - 2147749891 (0x80041003)

Il nome utente e la password correnti o specificati non sono validi o autorizzati a stabilire la connessione.

wbemErrFailed - 2147749889 (0x80041001)

Errore non specificato.

wbemErrInvalidNamespace - 2147749902 (0x8004100E)

Lo spazio dei nomi specificato non esiste nel server.

wbemErrInvalidParameter - 2147749896 (0x80041008)

È stato specificato un parametro non valido oppure non è stato possibile analizzare lo spazio dei nomi.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Memoria insufficiente per completare l'operazione.

wbemErrTransportFailure - 2147749909

Si è verificato un errore di rete, impedendo il normale funzionamento.

Commenti

Il metodo ConnectServer viene spesso usato per la connessione a un account con credenziali di nome utente e password diverse in un computer remoto perché non è possibile specificare una password diversa in una stringa del moniker . Per altre informazioni, vedere Connessione a WMI in un computer remoto.

L'uso di un indirizzo IPv4 per connettersi a un server remoto può causare un comportamento imprevisto. La causa probabile è che le voci DNS non aggiornate nell'ambiente in uso. In queste circostanze, verrà usata la voce PTR non aggiornata per il computer, con risultati imprevedibili. Per evitare questo comportamento, è possibile aggiungere un punto (".") all'indirizzo IP prima di chiamare ConnectServer. In questo modo la ricerca DNS inversa ha esito negativo, ma può consentire la riuscita della chiamata a ConnectServer nel computer corretto.

Esempio

Nell'esempio di codice VBScript seguente viene descritto come connettersi a un computer remoto per ottenere Win32_IP4RouteTable dati. Il nome di dominio specificato in strDomain viene usato in 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

Il frammento di codice di PowerShell seguente accede a un server remoto ed elenca le classi WMI disponibili.

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

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Intestazione
Wbemdisp.h
Libreria dei tipi
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemLocator
IID
IID_ISWbemLocator

Vedi anche

SWbemLocator

SWbemServices

Connessione a WMI in un computer remoto

Creazione di uno script WMI