Connessione a WMI in remoto con VBScript
È possibile creare una connessione remota a WMI con VBScript creando un oggetto connessione. Questo oggetto contiene il nome del computer, lo spazio dei nomi WMI a cui connettersi, nonché eventuali credenziali e livelli di autenticazione pertinenti.
Per connettersi a un sistema remoto tramite VBScript
Specificare le informazioni di connessione, ad esempio il nome del computer remoto, le credenziali e il livello di autenticazione per la connessione.
Se ci si connette a un computer remoto usando le stesse credenziali (dominio e nome utente) con cui si è connessi, è possibile specificare le informazioni di connessione in un GetObjectmoniker, come descritto nell'esempio di codice seguente.
strComputer = "Computer_B" Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\Root\CIMv2")
In generale, è necessario specificare lo spazio dei nomi WMI a cui connettersi nel computer remoto. Questo perché è possibile che lo spazio dei nomi predefinito non sia lo stesso in computer diversi. Specificare lo spazio dei nomi garantisce la connessione allo stesso spazio dei nomi su tutti i computer coinvolti.
Per altre informazioni sulle costanti VBScript e sulle stringhe di scripting per l'uso della connessione moniker, vedere Impostazione del livello di sicurezza del processo predefinito tramite VBScript.
Se ci si connette a un computer remoto in un dominio diverso o si usa un nome utente e una password diversi, è necessario usare il metodo SWbemLocator.ConnectServer.
Come con un moniker, si usa ConnectServer per specificare le credenziali, il livello di autenticazione e lo spazio dei nomi per la connessione remota. L'esempio di codice seguente descrive l'uso di ConnectServer per accedere a un computer remoto usando un account amministratore e una password.
strComputer = "Computer_B" Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _ "Root\CIMv2", _ "fabrikam\administrator", _ "password")
Quando si usa la funzione ConnectServer per le connessioni remote, impostare la rappresentazione e l'autenticazione sull'oggetto di sicurezza ottenuto da una chiamata a SWbemServices.Security. È possibile usare l'enumerazione WbemImpersonationLevelEnum per specificare il livello di rappresentazione.
Nell'esempio di codice seguente viene impostato il livello di rappresentazione per l'esempio di codice VBScript precedente.
objSWbemServices.Security_.ImpersonationLevel = 3
Si noti che alcune connessioni richiedono un livello di autenticazione specifico. Per ulteriori informazioni, vedere Impostazione della sicurezza del processo dell'applicazione client e Sicurezza dei client di scripting.
In particolare, è necessario impostare il livello di autenticazione su RPC_C_AUTHN_LEVEL_PKT_PRIVACY o 6 se lo spazio dei nomi a cui ci si connette nel computer remoto richiede una connessione crittografata prima di restituire i dati. È anche possibile usare questo livello di autenticazione, anche se lo spazio dei nomi non lo richiede. In questo modo si garantisce che i dati vengano crittografati mentre attraversano la rete. Se si tenta di impostare un livello di autenticazione inferiore a quello consentito, verrà restituito un messaggio di accesso negato. Per altre informazioni, vedere Richiedere una connessione crittografata a uno spazio dei nomi.
Dopo aver effettuato la connessione, è possibile continuare ad accedere ai dati WMI. Per altre informazioni, vedere attività di WMI per script e applicazioni.
Esempi
Per un esempio VBScript di dimensioni maggiori, vedere la sezione Esempi nella pagina di riferimento SWbemLocator.ConnectServer.
L'esempio di codice VBScript seguente si connette a un gruppo di computer remoti nello stesso dominio creando una matrice di nomi di computer remoti e quindi visualizzando i nomi dei dispositivi Plug and Play, istanze di Win32_PnPEntity, in ogni computer. Per eseguire lo script seguente, è necessario essere un amministratore nei computer remoti. Si noti che il carattere "\\" richiesto prima del nome del computer remoto è aggiunto dallo script in seguito all'impostazione del livello di rappresentazione. Per altre informazioni sui percorsi WMI, vedere Descrizione della posizione di un oggetto WMI.
On Error Resume Next
arrComputers = Array("Computer1","Computer2","Computer3")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "===================================="
WScript.Echo "Computer: "& strComputer
WScript.Echo "===================================="
Set objWMIService = GetObject("winmgmts:\\" & strComputer& "\Root\CIMv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_PnPEntity instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "Name: "& objItem.Name
Wscript.Echo "Status: "& objItem.Status
Next
Next
L'esempio di codice VBScript seguente consente di connettersi a un computer remoto usando credenziali diverse. Ad esempio, un computer remoto in un dominio diverso o connettersi a un computer remoto che richiede un nome utente e una password diversi. In questo caso, usare la connessioneSWbemServices.ConnectServer.
' Full Computer Name
' can be found by right-clicking My Computer,
' then click Properties, then click the Computer Name tab)
' or use the computer's IP address
strComputer = "FullComputerName"
strDomain = "DOMAIN"
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()
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
"Root\CIMv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" + strDomain)
Set colSwbemObjectSet = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
Wscript.Echo "Process Name: " & objProcess.Name
Next
Argomenti correlati