Condividi tramite


Connessione a WMI con VBScript

Gli script WMI possono condensare molti dei passaggi necessari in un programma C++. Possono connettersi a WMI, non solo tramite un oggetto SWbemLocator, ma anche tramite il moniker "winmgmts:". Un moniker è un nome breve che individua uno spazio dei nomi, una classe o un'istanza in WMI. Il nome "winmgmts:" è il moniker WMI che indica all'host di Windows Script di usare gli oggetti WMI, si connette allo spazio dei nomi predefinito e ottiene un oggetto SWbemServices. Altre informazioni di connessione, ad esempio un livello di rappresentazione o una classe o un'istanza specifica, vengono visualizzate nella stringa che segue il nome del moniker. È possibile usare moniker nelle chiamate che creano o ottengono oggetti WMI. Per ulteriori informazioni, vedere La costruzione di una stringa moniker.

La procedura seguente descrive come connettersi a WMI usando SWbemLocator.

Per connettersi a WMI tramite SWbemLocator

  1. Recuperare un oggetto localizzatore con una chiamata a CreateObject.

    Set Locator = CreateObject("WbemScripting.SWbemLocator")
    
  2. Accedere allo spazio dei nomi usando una chiamata al metodo ConnectServer.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    

    Se non si specifica un computer nella chiamata a ConnectServer, WMI si connette al computer locale. Se non si specifica uno spazio dei nomi, WMI si connette allo spazio dei nomi specificato nella chiave del Registro di sistema.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Spazio dei Nomi Predefinito

    Lo spazio dei nomi predefinito è \root\cimv2. Per ulteriori informazioni sui namespace, vedere Creazione di gerarchie all'interno di WMI.

  3. Impostare il livello di impersonificazione con una chiamata al metodo SWbemServices.Security_.

    objService.Security_.ImpersonationLevel = 3 
    

    Per altre informazioni, vedere Impostazione del livello di sicurezza del processo predefinito tramite VBScript.

  4. Realizza lo scopo del tuo script.

    WMI espone un'ampia gamma di oggetti di scripting che usano per accedere e modificare i dati nella rete. Per ulteriori informazioni, fare riferimento a Manipolazione delle informazioni sulle classi e sulle istanze e Interfaccia di Programmazione delle Applicazioni (API) per WMI.

    Set objLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objService = objLocator.ConnectServer(".", "root\cimv2")
    objService.Security_.ImpersonationLevel = 3
    Set Jobs = objService.ExecQuery("SELECT * FROM Win32_ScheduledJob")
    i=0
    For each Job in Jobs
        i = i+1   
        WScript.Echo Job.JobId & "  " & Job.Command & VBNewLine
    Next
    If i = 0 Then
        WScript.Echo "No Jobs Scheduled with the AT command were found"
    End If
    

La procedura seguente descrive come connettersi a WMI e recuperare un oggetto usando un moniker.

Per connettersi a WMI e recuperare un oggetto usando un moniker

  1. Chiamare GetObject con un moniker nel parametro di input.

    'the simple version
    Set MyObject = GetObject("winMgmts::Win32_scheduledJob")
    
    'Or the more complex version
    strComputer = "."
    Set MyObject = GetObject("winMgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\Root\CIMv2:Win32_ScheduledJob")
    

    Il moiniker contiene un numero di elementi che è possibile usare per connettersi a WMI:

    • "winmgmts:" istruisce WSH di usare oggetti API di scripting. In questo particolare esempio, WSH saprà che deve restituire un oggetto SWbemObject che descrive il primo Win32_scheduledJob nel sistema. Altri possibili oggetti da restituire sono un oggetto SWbemCollection o un oggetto SWbemServices, a seconda del moniker descritto.

    • Facoltativamente, è possibile impostare i livelli di sicurezza per la connessione. Si noti che non è possibile impostare le informazioni sul nome e sulla password in un moniker, tuttavia. Per ulteriori informazioni, consulta Protezione dei client di scripting.

    • Facoltativamente, è possibile definire il percorso dell'oggetto WMI. Sono inclusi sia il computer locale che quello remoto, lo spazio dei nomi, così come il nome della classe. Per ulteriori informazioni sull'uso del VBScript GetObject negli script WMI, vedere Creating an Instance e Retrieving a WMI Instance.

  2. Invece di recuperare un singolo elemento o una raccolta, è anche possibile scegliere di recuperare l'oggettoSWbemServices(come descritto nell'esempio precedente). Successivamente, è possibile chiamare query aggiuntive sull'oggetto restituito.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colScheduledJobs = objWMIService.ExecQuery("Select * from Win32_ScheduledJob")
    For Each objJob in colScheduledJobs
        Wscript.Echo "Job ID: " & objJob.JobId & "Command: " & objJob.Command & VBNewLine
    Next
    

    Nell'esempio precedente, impersonationLevel=3 è il livello di sicurezza predefinito del processo. Nell'esempio seguente non è necessario specificare questo livello di sicurezza del processo, a meno che non sia necessario modificare la sicurezza del processo in delegato. Per altre informazioni, vedere Impostazione del livello di sicurezza del processo predefinito tramite VBScript.

Scripting in WMI