Gestione remota Windows e WMI
Gestione remota Windows può essere usata per recuperare i dati esposti da Strumentazione gestione Windows ( WMI e MI). È possibile ottenere dati WMI con script o applicazioni che usano l'API di scripting WinRM o tramite lo strumento da riga di comando Winrm.
WinRM supporta la maggior parte delle classi e delle operazioni WMI familiari, inclusi gli oggetti incorporati. WinRM può sfruttare WMI per raccogliere dati sulle risorse o per gestire le risorse in un sistema operativo basato su Windows. Ciò significa che è possibile ottenere dati su oggetti quali dischi, schede di rete, servizi o processi nell'organizzazione tramite il set esistente di classi WMI . È anche possibile accedere ai dati hardware disponibili dal provider WMI standard IPMI.
Identificazione di una risorsa WMI
È possibile fare riferimento a una classe WMI come risorsa in WinRM e nel protocollo WS-Management: un tipo di entità gestita, ad esempio un servizio o un disco.
Una classe o un metodo WMI viene identificato da un URI , esattamente come avviee con qualsiasi altra risorsa quando si usa il protocollo WS-Management. L'URI può specificare una risorsa WMI (classe), un'azione WMI (metodo) o identificare un'istanza specifica di una classe nei messaggi inviati in rete. Per altre informazioni, vedere URI delle risorse.
Costruzione del prefisso URI per le classi WMI
Il prefisso URI contiene una parte fissa e lo spazio dei nomi WMI. Ad esempio, il prefisso URI in Windows Server che contiene la parte fissa del prefisso è: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>
. In questo modo è possibile generare il prefisso URI per qualsiasi spazio dei nomi WMI. Ad esempio, per accedere allo spazio dei nomi root\default WMI, usare il prefisso URI seguente: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/
.
La maggior parte delle classi WMI per la gestione si trova nello spazio dei nomi root\cimv2. Per accedere a classi e istanze nello spazio dei nomi root\cimv2 , usare il prefisso URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
. Per altre informazioni, vedere URI delle risorse.
Generazione di un URI completo per le classi WMI
L'URI fornito, al Winrm strumento da riga di comando o a uno script, è costituito dal prefisso più la specifica della risorsa.
La procedura seguente descrive come generare un URI di risorsa per ottenere una classe WMI o come usarla in un'operazione di enumerazione.
Per generare un URI di risorsa per una classe WMI
Iniziare con il prefisso che indica che deve essere usato lo schema del protocollo WS-Management.
https://schemas.microsoft.com/wbem/wsman/1
Il prefisso URI della risorsa per le classi WMI è sempre lo stesso. Per altre informazioni, vedere prefissi URI.
Aggiungere lo spazio dei nomi WMI al prefisso.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
Aggiungere il nome della classe.
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service
Per impostare il valore di una proprietà o per richiamare un metodo specifico, aggiungere il valore o i valori della chiave richiesti per la classe .
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt
Se si lascia vuoto il valore della chiave, non si modificherà il valore della proprietà originale.
Nota
Se si lascia vuoto il valore della chiave, il valore della proprietà viene impostato su NULL.
Individuazione di una risorsa WMI con WinRM
È possibile ottenere dati WMI tramite lo strumento da riga di comando, Winrmo tramite uno script di Visual Basic che usa l'API di scripting WinRM . Non si usa un percorso WMI per individuare una risorsa. Si converte invece lo spazio dei nomi e la gerarchia WMI in un URI .
L'URI WinRM per una classe WMI contiene due parti: il prefisso URI e la classe a cui si vuole accedere.
Ad esempio, l'URI seguente può essere fornito al metodo Session.Enumerate per elencare tutti i servizi in un computer. Il prefisso URI è http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/
e la classe è Win32_Service.
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
In WMI elencare i dati per tutte le istanze di una risorsa o di una classe in diversi modi:
Query per tutte le istanze di tale risorsa.
Set colServices = objWMIService.ExecQuery("Select * from Win32_Service")
Chiamata a SWbemServices.InstancesOf o SWbemObject.Instances_.
Set colServices = InstancesOf("Win32_Service")
In WinRM esiste un modo per elencare tutte le istanze di una risorsa: Session.Enumerate.
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )
Individuazione di un'istanza specifica di una risorsa WMI
In WMI è possibile designare una determinata istanza di una classe specificando i valori per le proprietà chiave o eseguendo una query per un'istanza che corrisponde a un elenco di valori di proprietà. Le proprietà delle chiavi hanno il qualificatore wmi chiave.
È possibile ottenere un'istanza specifica di una classe in diversi modi:
Chiamata a Session.Enumerate con i parametri di filtro e dialetto per creare una query.
RemoteComputer = "servername.domain.com" strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL" strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*" Set objWsman = CreateObject("Wsman.Automation") Set objSession = objWsman.CreateSession("https://" & RemoteComputer) strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'" Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
Chiamata a SWbemServices.Get. Per Session.Get, è necessario specificare uno o più valori di chiave specifici, preceduti da un punto interrogativo (?).
Il formato dell'URI per un'istanza specifica è
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value
.strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
Una classe WMI può avere più di una chiave. Le coppie nome-valore chiave sono separate da un segno "+". In tal caso, il formato è:
http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2
.La sintassi WinRM per ottenere un oggetto WMI singleton è diversa da WMI. Un singleton è una classe WMI definita in modo che sia consentita una sola istanza. Win32_CurrentTime o Win32_WMISetting sono esempi di una classe singleton WMI.
La sintassi WMI per i singleton è illustrata nell'esempio di codice VBScript seguente.
Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
Nell'esempio seguente viene illustrata la sintassi singleton WinRM che non usa "@".
strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
Aggiunta di un selettore a un oggettoResourceLocatoro IWSManResourceLocator.
Nell'esempio di codice VBScript seguente viene illustrato come usare un selettore per ottenere un'istanza specifica di Win32_Processor.
strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor" Set objWsman = CreateObject("Wsman.Automation") Set Session = objWsman.CreateSession Set Locator = objWsman.CreateResourceLocator(strUri) Locator.AddSelector "DeviceID", "CPU0"