Oggetto SWbemServices

È possibile utilizzare i metodi di un oggetto SWbemServices per eseguire operazioni su uno spazio dei nomi in un host locale o in un host remoto. Questo oggetto non può essere creato dalla chiamata CreateObject VBScript.

Membri

L'oggetto SWbemServices dispone di questi tipi di membri:

Metodi

L'oggetto SWbemServices dispone di questi metodi.

Metodo Descrizione
AssociatorsOf Recupera le istanze delle risorse gestite associate a una risorsa specificata tramite una o più classi di associazione. Specificare il percorso dell'oggetto per l'endpoint di origine e AssociatorsOf restituisce le risorse gestite nell'endpoint opposto. Il metodo AssociatorsOf esegue la stessa funzione eseguita dalla query WQL "ASSOCIATORS OF".
AssociatorsOfAsync Restituisce in modo asincrono una raccolta di oggetti (classi o istanze) associati a un oggetto specificato.
Elimina Elimina un'istanza di una risorsa gestita (o una definizione di classe dal repository CIM).
DeleteAsync Elimina in modo asincrono la classe o l'istanza specificata nel percorso dell'oggetto.
ExecMethod Fornisce un modo alternativo per eseguire un metodo definito da una definizione di classe di risorse gestita. Usato principalmente nelle situazioni in cui il linguaggio di scripting non supporta i parametri out. Ad esempio, JScript non supporta i parametri out.
ExecMethodAsync Esegue in modo asincrono un metodo esportato da un provider di metodi.
ExecNotificationQuery Esegue una query di sottoscrizione di eventi per ricevere gli eventi. Una query di sottoscrizione di eventi è una query che definisce una modifica all'ambiente gestito che si vuole monitorare. Quando si verifica la modifica, l'infrastruttura WMI recapita un evento che descrive la modifica allo script chiamante.
ExecNotificationQueryAsync Esegue in modo asincrono una query per ricevere eventi.
ExecQuery Esegue una query per recuperare una raccolta di istanze di risorse gestite da WMI (o definizioni di classe). ExecQuery può essere usato per recuperare una raccolta filtrata di istanze che corrispondono ai criteri definiti nella query passata a ExecQuery.
ExecQueryAsync Esegue in modo asincrono una query per recuperare gli oggetti.
Ottieni Recupera una singola istanza di una risorsa gestita (o una definizione di classe) in base a un percorso oggetto.
GetAsync Recupera in modo asincrono un oggetto, ovvero una definizione di classe o un'istanza, in base al percorso dell'oggetto.
InstancesOf Recupera tutte le istanze di una risorsa gestita in base a un nome di classe. Per impostazione predefinita, InstancesOf esegue un recupero approfondito. Ovvero InstancesOf recupera le istanze della risorsa identificata dal nome della classe passata al metodo e recupera anche tutte le istanze di tutte le risorse che sono sottoclassi (definite sotto) della classe di destinazione.
InstancesOfAsync Restituisce in modo asincrono le istanze di una classe specificata in base ai criteri di selezione specificati dall'utente.
RiferimentiTo Restituisce tutte le associazioni che fanno riferimento a una risorsa specificata. Il modo migliore per comprendere ReferencesTo consiste nel confrontarlo con il metodo AssociatorsOf . AssociatorsOf restituisce le risorse dinamiche che si trovano alla fine opposta di un'associazione. ReferencesTo restituisce l'associazione stessa. Il metodo ReferencesTo esegue la stessa funzione eseguita dalla query WQL "REFERENCES OF".
ReferencesToAsync Restituisce in modo asincrono una raccolta di tutte le classi o istanze di associazione che fanno riferimento a una classe o a un'istanza specifica.
SottoclassiOf Recupera tutte le sottoclassi di una classe specificata dal repository CIM.
SottoclassiOfAsync Restituisce in modo asincrono una raccolta di sottoclassi per una classe specificata.

Proprietà

L'oggetto SWbemServices dispone di queste proprietà.

Proprietà Tipo di accesso Descrizione
Sicurezza_
Sola lettura
Consente di ottenere o impostare le impostazioni di sicurezza per un oggetto SWbemServices .

Commenti

I metodi possono essere chiamati in modalità sincrona, in modalità asincrona o in modalità semisynchrono. Per altre informazioni, vedere Chiamata di un metodo.

Panoramica

SWbemServices svolge due ruoli primari. In primo luogo, l'oggetto SWbemServices rappresenta una connessione autenticata a uno spazio dei nomi WMI in un computer di destinazione. In secondo luogo, SWbemServices è l'oggetto automation usato per recuperare le risorse gestite da WMI. È possibile ottenere un riferimento a un oggetto SWbemServices in uno dei due modi seguenti:

  • Come illustrato nella maggior parte degli script WMI presentati finora, è possibile usare la funzione GetObject VBScript in combinazione con il moniker WMI "winmgmts:". L'esempio seguente è la forma più semplice di una connessione WMI. L'esempio si connette allo spazio dei nomi predefinito (in genere "Root\CIMv2") nel computer locale:

    Set objSWbemServices = GetObject("winmgmts:")

  • È anche possibile utilizzare il metodo ConnectServer dell'oggetto SWbemLocator per ottenere un riferimento a un oggetto SWbemServices.

Dopo aver ottenuto un riferimento a un oggetto SWbemServices , usare il riferimento all'oggetto per chiamare 1 di 18 metodi disponibili usando SWbemServices. SWbemServices può restituire uno dei tre diversi oggetti libreria di scripting WMI (SWbemObjectSet, SWbemObject o SWbemEventSource), a seconda del metodo chiamato. Conoscere il tipo di oggetto restituito da ogni metodo consente di determinare il passaggio successivo che lo script deve eseguire. Ad esempio, se si recupera un oggetto SWbemObjectSet, è necessario enumerare la raccolta per accedere a ogni oggetto SWbemObject nella raccolta. Se si torna a un oggetto SWbemObject, è possibile accedere immediatamente ai metodi e alle proprietà dell'oggetto senza enumerare prima la raccolta.

Modalità di funzionamento

SWbemServices supporta tre modalità di funzionamento: sincrona, asincrona e semisynchronous.

  • Synchronous. In modalità sincrona, lo script si blocca (sospende) fino al completamento del metodo SWbemServices . Non solo lo script attende, ma nei casi in cui WMI recupera le istanze delle risorse gestite, WMI compila l'intero oggetto SWbemObjectSet in memoria prima che il primo byte di dati venga restituito allo script chiamante. Ciò può avere un effetto negativo sulle prestazioni dello script e sul computer che esegue lo script. Ad esempio, il recupero sincrono di migliaia di eventi dai registri eventi di Windows può richiedere molto tempo e usare molta memoria. Per questi motivi, le operazioni sincrone non sono consigliate, ad eccezione dei tre metodi (Delete, ExecMethod e Get) sincroni per impostazione predefinita. Questi metodi non restituiscono set di dati di grandi dimensioni, pertanto l'operazione semisynchronous non è necessaria.

  • Asincrona. In modalità asincrona, lo script chiama uno dei nove metodi asincroni e restituisce immediatamente. Ovvero, non appena viene chiamato il metodo asincrono, lo script riprende l'esecuzione della riga di codice successiva. Per usare un metodo asincrono, lo script deve prima creare un oggetto SWbemSink e una subroutine speciale denominata gestore eventi. WMI esegue l'operazione asincrona e notifica lo script chiamando la subroutine del gestore eventi al termine dell'operazione.

  • Semisynchronous. La modalità semisynchrono è una compromissione tra sincrona e asincrona. Le operazioni semisynchrono offrono prestazioni migliori rispetto alle operazioni sincrone, ma non richiedono la conoscenza aggiuntiva e i passaggi di scripting necessari per gestire le operazioni asincrone. Si tratta del tipo di operazione predefinito per la maggior parte delle query WMI.

    In modalità semisynchrono lo script chiama uno dei sei metodi di recupero dei dati e restituisce immediatamente. WMI recupera le risorse gestite in background man mano che lo script continua a essere eseguito. Quando vengono recuperate le risorse, vengono immediatamente restituite allo script tramite un oggetto SWbemObjectSet. È possibile iniziare ad accedere alle risorse gestite senza attendere l'assemblaggio dell'intera raccolta.

    Esiste un'attenzione alle operazioni semisynchrono quando si utilizzano risorse gestite con molte istanze (molti significano maggiore di 1.000), ad esempio CIM_DataFile e Win32_NTLogEvent. L'attenzione è un risultato del modo in cui WMI gestisce le istanze delle risorse gestite. Per ogni istanza di una risorsa gestita, WMI crea e memorizza nella cache un oggetto SWbemObject . Quando esiste un numero elevato di istanze per una risorsa gestita, il recupero di istanze può monopolizzare le risorse disponibili, riducendo le prestazioni dello script e del computer.

    Per risolvere il problema, è possibile ottimizzare le chiamate al metodo semisynchrono usando il flag wbemFlagForwardOnly . Il flag wbemFlagForwardOnly , combinato con il flag wbemFlagReturnImmediately (flag semisynchronous predefinito), indica a WMI di restituire un oggetto SWbemObjectSet di sola inoltro, che elimina il problema di prestazioni del set di dati di grandi dimensioni. Tuttavia, l'uso del flag wbemFlagForwardOnly include un costo. È possibile enumerare solo una sola volta SWbemObjectSet . Dopo che ogni SWbemObject in un oggetto SWbemObjectSet è accessibile, viene rilasciata la memoria allocata all'istanza.

Ad eccezione di Delete, ExecMethod, Get e nove metodi asincroni, semisynchronous è la modalità predefinita e consigliata dell'operazione.

Metodi comunemente usati

I metodi più spesso usati negli script di amministrazione del sistema sono IstanzeOf, ExecQuery, Get e ExecNotificationQuery. Anche se spesso usato, IstanzeOf non è necessariamente il modo consigliato per recuperare le informazioni (anche se è probabilmente il modo più semplice).

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_SWbemServices
IID
IID_ISWbemServices

Vedi anche

Scripting di oggetti API

Chiamata di un metodo